标签:提醒 解释 问题 ber 条件 ali while lin 因此
示例 3:
解释: 从右向左读, 为 01 。因此它不是一个回文数。
#include <stdio.h>
#include<stdbool.h>
bool isPalindrome(int x);
int main()
{
printf("%d", isPalindrome(-1));
printf("%d", isPalindrome(0));
printf("%d", isPalindrome(10));
printf("%d", isPalindrome(121));
printf("%d", isPalindrome(123321));
return 0;
}
bool isPalindrome(int x) {
/*(这里借鉴了官方,主要就是为了过滤参数,过滤的情况有 1.负数情况,这很显然不是回文数, 2. 末尾为0的情况(注意0必须排除,官方没有提醒我0也是回文数....其实是我自己傻)*/
if(x<0||(x%10==0&&x!=0))
return false;
int left=x;
int right=0;/*这两个参数的含义是x的左半部分和右半部分*/
while(left>right){
right=right*10+left%10;
if(left==right){
return true;
}
left=left/10;
}
if(left==right){
return true;
}
return false;
}
bool isPalindrome(int x) {
if(x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int revertedNumber = 0;
while(x > revertedNumber) {
revertedNumber = revertedNumber * 10 + x % 10;
x /= 10;
}
return x == revertedNumber || x == revertedNumber/10;
}
标签:提醒 解释 问题 ber 条件 ali while lin 因此
原文地址:https://www.cnblogs.com/WuLiaoTC/p/10323771.html