Determine whether an integer is a palindrome. Do this without extra space.
該題目來源於leetcode。回文串是一個正讀和反讀都一樣的字符串,比如“level”或者“noon”等等就是回文串。當然整數形式的回文串也是類似的。但負數不是回文串。兩種思路:
按定義來,依次比較串的首尾,直到中間相隔1個或0個元素(取決於整數是奇數位數還是偶數位數)。優點是當不是回文串時,可以很快發現。如果是回文串,則必須比較全部位數。根據回文串的特點,正反序,其數是相同的。優點是不必按位數來判斷。class Solution { public: bool isPalindrome(int x) { vectorv; int i, j; if (x == 0) return true; while (x) { v.push_back(x % 10); x /= 10; } i = 0; j = v.size()-1; while (i < j) { if (v.at(i++) != v.at(j--)) return false; } return true; } };
class Solution { public: bool isPalindrome(int x) { int y = 0; int t = x; if (t < 0) //負數不是回文串 return false; while (t) { y = y * 10 + t % 10; t /= 10; } if (y ^ x) //判斷正反序是否相等 return false; return true; } };