一 什么是回文数
所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。
二 判断一个字符串是否是回文字符串
代码:
//判断一字符串是否是回文字符串
#include <iostream>
#include <string>
using namespace std;
int fun(string s){
int i, len = s.size()-1;
for(i = 0; i < len; i++, len--){
if(s[i] != s[len])
break;
}
if(i >= len)
cout << s << "是回文字符串";
else
cout << s << "不是回文字符串";
return 0;
}
int main(){
string str;
cin >> str;
fun(str);
return 0;
}
结果:
三 判断数字是否回文数
代码:
bool isPalindrome(long x) {
if(x<0 || (x>0 && x%10==0)){
return false;
}
long num = 0;
long s = x;//先拷贝一份
while(s > 0){//逆序取下各个位上的数字,再和原数比较,相等即为回文数
num = num*10 + s%10;
s /= 10;
}
return x==num;
}
结果:
四 类回文数问题
题目:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。
代码:
int reverse(int x) {
long long num = 0;
while(x){//将整数翻转
num = num*10 + x%10;
x /= 10;
}
if((num>pow(2, 31)) || (num<-pow(2, 31)-1))//当翻转后的数小于-2^31-1或者大于2^31时,数据越界
return 0;
return num;
}
结果: