进阶不用字符串来思考
我的想法就是把要判断的数地位到高位不断地拿出来并且存入一个数组里面。
当然这个得分类讨论,带符号的负数是不存在回文数的,只有一位的数肯定是回文数。
还有个需要考虑的问题就是数组的长度多大,int型数据最大为2^31-1算出来就是2147483647就是10位,所以长度L=10,最后考虑从数组从0到L/2是否对称后半部分数据。
class Solution {
public:
bool isPalindrome(int x) {
int result=0,temp=x,number=0,i=0,n,flag=0,demo[10];
if(x<0){
return false;
}
if(x/10==0){
return true;
}
while((temp/10)!=0){
number=temp%10;
demo[i]=number;
temp/=10;
++i;
if(temp/10==0){
demo[i]=temp;
}
}
n=i+1;
for(int k=0;k<n/2;++k){
// cout<<demo[k];//测试用
if(demo[k]!=demo[n-1-k]){//判断是否对称
flag=1;
break;
}
}
if(flag==0){
return true;
}
else{
return false;
}
}
};
ok!
没问题。
来源:https://blog.csdn.net/qq_38870145/article/details/102752914