这种题其实有很多细节不明确,需要和面试官交流,比如如何判断负数。
直观解法是reverse integer,但是会遇到溢出的问题。
可以每次尝试求第一位和最后一位,进行比较。
public class Solution {
//Time: O(n)
public boolean isPalindrome(int x) {
if (x < 0) {
return false;
}
int bigdiv = 1;
while (x / bigdiv >= 10) {
bigdiv *= 10;
}
while (x > 0) {
int left = x / bigdiv;
int right = x % 10;
if (left != right) {
return false;
}
x = x % bigdiv;
x = x / 10;
bigdiv = bigdiv / (100);
}
return true;
}
}
No comments:
Post a Comment