这种题其实有很多细节不明确,需要和面试官交流,比如如何判断负数。
直观解法是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