中国黄金建设网站,给人做违法网站规避,建湖网站建设价格,成都网页制作设计培训❓9. 回文数
难度#xff1a;简单
给你一个整数 x #xff0c;如果 x 是一个回文整数#xff0c;返回 true #xff1b;否则#xff0c;返回 false 。
回文数是指正序#xff08;从左向右#xff09;和倒序#xff08;从右向左#xff09;读都是一样的整数。
例如…❓9. 回文数
难度简单
给你一个整数 x 如果 x 是一个回文整数返回 true 否则返回 false 。
回文数是指正序从左向右和倒序从右向左读都是一样的整数。
例如121 是回文而 123 不是。
示例 1 输入x 121 输出true 示例 2 输入x -121 输出false 解释从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3 输入x 10 输出false 解释从右向左读, 为 01 。因此它不是一个回文数。 提示 − 2 31 x 2 31 − 1 -2^{31} x 2^{31} - 1 −231x231−1
进阶 你能不将整数转为字符串来解决这个问题吗
思路
法一
转化为字符串
法二进阶
反转一半数字将整数分成左右两部分右边那部分需要转置然后判断这两部分是否相等。
代码(Java、C)
法一 Java
class Solution {public boolean isPalindrome(int x) {if(x 0) return false;String s String.valueOf(x);for(int i 0, j s.length() - 1; i j; i, j--){if(s.charAt(i) ! s.charAt(j)) return false;}return true;}
}C
class Solution {
public:bool isPalindrome(int x) {if(x 0) return false;string s to_string(x);for(int i 0, j s.size() - 1; i j; i, j--){if(s[i] ! s[j]) return false;}return true;}
};法二 Java
class Solution {public boolean isPalindrome(int x) {if(x 0) return true;if(x 0 || x % 10 0) return false;int y x % 10;while(x y){x / 10;y y * 10 x % 10;}return x y || x y / 10;}
}C
class Solution {
public:bool isPalindrome(int x) {if(x 0) return true;if(x 0 || x % 10 0) return false;int y x % 10;while(x y){x / 10;y y * 10 x % 10;}return x y || x y / 10;}
};运行结果 复杂度分析
时间复杂度 O ( l o g n ) O(logn) O(logn)对于每次迭代我们会将输入除以 10因此时间复杂度为 O ( l o g n ) O(logn) O(logn)。空间复杂度 O ( 1 ) O(1) O(1)我们只需要常数空间存放若干变量。
题目来源力扣。 放弃一件事很容易每天能坚持一件事一定很酷一起每日一题吧 关注我 leetCode专栏每日更新 注 如有不足欢迎指正