力扣回文数不利用字符串用数组

做~自己de王妃 提交于 2019-12-02 10:38:46

进阶不用字符串来思考

在这里插入图片描述
我的想法就是把要判断的数地位到高位不断地拿出来并且存入一个数组里面。
当然这个得分类讨论,带符号的负数是不存在回文数的,只有一位的数肯定是回文数。
还有个需要考虑的问题就是数组的长度多大,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!
没问题。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!