leetcode week2

来源:互联网 发布:毕业论文数据造假 编辑:程序博客网 时间:2024/04/30 00:33

Determine whether an integer is a palindrome. Do this without extra space.


问题描述:输入一个整数,判断其是否回文,即3223为回文,3224不是如此类推。要求不能使用额外空间。


解题思路:首先要定义一下回文,按照题目的意思,整数之中,负数我们假定不为回文,然后小于10大于0的一位整数为回文。

对于整数x,我们可利用C中int整数除法后小数部分不计的性质,并且创建新的数组temp由个位数开始记录x的序列。

例如x=3223, temp=0为初始状态,经过迭代,得到(x,temp)分别为(322,3),(32,32),等到x>temp时,我们比较x与temp的序列即可得到结果。

具体算法如下:

class Solution {public:    bool isPalindrome(int x) {        if(x<0||(x>0&&x%10==0)) return false;        int temp = 0;        while(x>temp){            temp = temp*10 + x%10;            x = x/10;        }        return (temp==x)||(temp/10==x);    }};


0 0
原创粉丝点击