判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:输入: 121输出: true
示例 2:输入: -121输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:输入: 10输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:你能不将整数转为字符串来解决这个问题吗?
思维僵化还在字符串没跳出来,扫了一眼评论区,瞅到“反转”二字,瞬间悟了。整数+反转,还是判断回文,灵光一闪,思路不难找。例如数字:1223,将它倒置获得3221,比较后发现不相等,就不是回文。
#include <array>
class Solution {
public:
bool isPalindrome(int x) {
if(x<0)
{
return false;
}
else
{
int len=0,i=0,temp=x;
long long s=0;
std::array<int,100>arr;
while(temp)
{
arr[len]=temp%10;
temp/=10;
len++;
}
while(i<len)
{
s+=pow(10,len-1-i)*arr[i];
//cout<<s<<endl;
i++;
}
if(s==x)
{
return true;
}
else
{
return false;
}
}
}
};
一开始自信满满交上去,发现s太小了,超出范围了,改成long long就过了。