您的位置:首页 > 其它

[LeetCode]Palindrome Number

2015-07-08 21:04 162 查看


判断一个整数是不是回文数

利用字符串的操作,将int通过stringstream转成

string来通用处理

class Solution {
public:
bool isPalindrome(int x) {
stringstream ss;
ss<<x;
string s;
ss>>s;
int i,j;
if(s.size()==1) return true;
i = s.size()/2-1;
if(s.size()&0x1)    //odd
j = i+2;
else
j = i+1;
while(i>=0&&j<s.size()&&s[i]==s[j])
--i,++j;
++i,--j;
if(j-i+1==s.size())
return true;
else
return false;
}
};


如果不能使用额外空间

使用反转整数的方法

bool isPalindrome(int x) {
int y=0;
if(x<0) return false;
int x_old = x;
while(x){
y = 10 * y + x%10;
x = x/10;
}
return x_old==y;

}


一个awesome的方法,只用比较一半数字

/*Determine whether an integer is a palindrome. Do this without extra space.*/
bool isPalindrome(int x) {
if(x<0|| (x!=0 &&x%10==0)) return false;
int sum=0;
while(x>sum)
{
sum = sum*10+x%10;
x = x/10;
}
return (x==sum)||(x==sum/10);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: