9-回文数

Posted by LemonWhale on June 24, 2023
力扣第9题(简单)
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。

解题思路

数学解法:

  1. 通过取整获得首位数;
  2. 通过取余获得末尾数;
  3. 比较 -> 不同返回false;相同则继续,直到x<0。
    ⚠ 注意:x若是负数则必定不是回文数。

Python写法

def isPlidrome(x):
    if x < 0:
        return False
    div = 1
    # 使除数和被除数的位数一致,以进行取整操作
    while x / div >= 10:
        div *= 10
    while x > 0:
        # 注意pyhton的取余是两个//
        left = x // div
        right = x % 10
        if left != right:
            return False
        x = (x % div) // 10
        div /= 100
    return True

x = 121
print(isPlidrome(x))

C语言写法


#include <stdio.h>
#include <stdbool.h>

int isPlidrome(int x) {
    int div = 1;
    int left = 0;
    int right = 0;
    if (x < 0)
        return false;
    while (x / div >= 10)
        div *= 10;
    while (x > 0) {
        left = x / div;
        right = x % 10;
        if (left != right)
            return false;
        x = (x % div) / 10;
        div /= 100;
    }
    return true;
}

int main() {
    int x = 121;
    bool res;
    res = isPlidrome(x);
    printf("是否是回文数:%d", res);
}