刷leetcode-day2
一、题目:
9.回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例1:
示例2:
示例3:
二、思路:
将int整数用字符串库函数to_string转化为string类型,再使用一个for循环从头到尾依次比较:第一个和倒数第一个,第二个和倒数第二个。。。
三、代码:C++
class Solution {
public:
bool isPalindrome(int x) {
string s=to_string(x);
int k=0;
for(int i=0;i<s.size()-1;++i)
{
if(s[i]==s[s.size()-1-i])
k++;
}
if(k==s.size()-1)
return true;
else
return false;
}
};
四、扩展:
看了leetcode上的答案:将int转化为string,会占用额外的空间;可以考虑直接将int类型的整数直接反转,但是直接反转整数可能会导致溢出,因此考虑只反转后半部分
代码:
class Solution {
public:
bool isPalindrome(int x) {
if(x<0||(x%10==0&&x!=0))
return false; //排除特殊情况
int s=0;
int a=0;
while(x>s) //x不>s时,已经转换了一半的整数了
{
a=x%10;
x/=10;
s=s*10+a;
}
if(x==s||x==s/10) //x为奇数个时把中间数去除
return true;
else
return false;
}
};