判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121 输出: true
示例 2:
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
class Solution { public: bool isPalindrome(int x) { if(x<0||x%10==0&&x!=0) return false; int ori=x;//将x保存至origin之中,为了与反转后的书进行比较 int res=0; while(x!=0) { res=res*10+x%10; x/=10; } if(ori==res) return true; else return false; } };
当然还有更好的方法就是将数字转化为字符串来进行比较,下面是一个范例,大家学习一下:
static auto static_lambda = []() { std::ios::sync_with_stdio(false); std::cin.tie(0); return 0; }(); class Solution { public: bool isPalindrome(int x) { if(x<0) return false; if(x == 0) return true; char str[10]; int i = -1; while(x!=0) { str[++i] =x%10+'0'; x /= 10; // putchar(str[i]); } for(int j =0;j<=i/2;++j) { // printf("%c %c\n",str[j],str[i-j]); if(str[j] != str[i-j]) return false; } return true; } };