题目
回文数:将这个数反转之后,得到的数仍然是同一个数。
解题思路
不改变数据类型
- 求出整数的各个位数,并进行对比(在该文章中不进行实现)
- 求出数据对应的翻转,对比新旧整型是否一致
改变数据类型(转换为字符串类型)
- 在原字符串上进行对称比较
- 赋值给新字符串,将新字符串翻转,对比新旧字符串是否一致
附加提示
- 将整型转换为字符串型:to_string()
- 获取字符串长度:size()
- 字符串的反转:reverse()
- 获取字符串的首元素:begin()
- 获取字符串的末元素:end()
代码实现
不改变数据类型
bool isPalindrome(int num) {
// write your code here
int p=num;
int k=0;
while(p!=0)
{
k=k*10+p%10;
p=p/10;
}
if(k==num) return true;
else return false;
}
改变数据类型
实现1
bool isPalindrome(int num) {
// write your code here
string temp = to_string(num);
for(int i=0; i<temp.size()/2; i++)
{
if(temp[i] == temp[temp.size()-1-i]) continue;
else return false;
}
return true;
}
实现2
bool isPalindrome(int num) {
// write your code here
string temp = to_string(num);
string res = temp;
std::reverse(res.begin(), res.end());
return (!res.compare(temp));
}