标签:提醒 解释 问题 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