题目:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例1:
输入: 121
输出: true
自己的做法:
public boolean isPalindrome(int x) {
String str;
str = Integer.toString(x);
StringBuilder sb = new StringBuilder(str);
sb = sb.reverse();
String str2 = sb.toString();
return str.equals(str2);
}
执行用时 :16 ms,在所有 Java 提交中击败了11.60%的用户
内存消耗 :40.2 MB,在所有 Java 提交中击败了5.01%的用户
比较耗时耗空间
官方解答方法如下:
如果x为负数,或者为个位数为0的不正数,则肯定不是回文数。
我们逐渐将x的后边的数,移到res的开头。
直到res>=x,再比较res和x是否相等,或者x是否与res/10相等。
举几个例子:
12321:x=12 res=123(回文,x与res/10相等)
123321:x=123 res=123(回文,x与res相等)
1234:x=12 res=43
5432:x=5 res=234
public boolean isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int tmp = 0;
int res = 0;
while (res < x) {
tmp = x % 10;
res = res * 10 + tmp;
x /= 10;
}
return x == res || x == res / 10;
}
Mason97
发布了57 篇原创文章 · 获赞 0 · 访问量 891
私信
关注