算法思想:
一、将int转化成string,然后遍历字符串即可。
没看答案。
class Solution {
public:
bool isPalindrome(int x) {
if(x < 0) return false;
string num = to_string(x);
for(int i = 0; i < num.length(); i++){
if(i == num.length() - 1 - i) continue;
if(num[i] != num[num.length() - 1 - i]) return false;
}
return true;
}
};
二、反转int的后半部分
该方法必须要掌握,因为很多公司不允许使用第一种方法。
C++
class Solution {
public:
bool isPalindrome(int x) {
// 只需要把数字的后一半翻转,再与前一半比较即可判断回文
// 先排除肯定不是回文的情况
if (x < 0 || (x % 10 == 0 && x != 0)) return false;
int reverse = 0;
while (x > reverse) { // 当x<=reverse,则表明翻转了一般数字
reverse = reverse * 10 + x % 10;
x = x / 10;
}
return x == reverse || x == reverse / 10; // 前者为偶数位数,后者为奇数位数
}
};
python
#
#
# @param x int整型
# @return bool布尔型
#
class Solution:
def isPalindrome(self , x ):
# write code here
if x < 0 or (x % 10 == 0 and x != 0):
return False
reverse = 0
while x:
if x <= reverse:
break
reverse = reverse * 10 + x%10
x = x//10
return x == reverse or x == reverse//10