题目:
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数:是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
思路:方法一:将数字化为字符串,左右同时遍历
方法二:不借助字符串,求数字的倒序,然后比较是否相同
代码:
class Solution { // 方法一public boolean isPalindrome(int x) {String s = String.valueOf(x);int i = 0, j = s.length() - 1;while (i < j) {if (s.charAt(i) != s.charAt(j))return false;i++;j--;}return true;}
}
class Solution { // 方法二public boolean isPalindrome(int x) {if (x < 0) {return false;}int num = x;int cur = 0;while (num != 0) {cur = cur * 10 + num % 10; // 求x的倒序num = num / 10;}return cur == x;}
}
性能:
方法一:时间复杂度o(n) 空间复杂度o(1)
方法二:时间复杂度o(log n) 空间复杂度o(1)