157 判斷數字是否回文

2021-10-18 03:43:09 字數 1532 閱讀 5954

題目如下:

判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

示例 1:

輸入: 121

輸出: true

示例 2:

輸入: -121

輸出: false

解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是乙個回文數。

解題思路:

1、如果x是負數或者x是最低位為0的非0數字,直接執行return false

2、定義res並初始化為0

3、設定while迴圈,條件為x>res

4、res = res * 10 + x % 10;//res每次獲取當前x的最低位數字

然後x = x / 10;//x依次去除x本身的最低位數字

也就是說,res每次增加一位數字,即增加的是當前x的最低位數字

x每次減少一位數字,即減少的是當前x的最低位數字

5、退出while迴圈後,執行return x == res / 10 | | x == res;

執行思路:

比如輸入數字為:123

第一次while迴圈:res=3 ,x=12, x>res

第二次while迴圈:res=32,x=1,x比如輸入數字121

第一次while迴圈:res=1,x=12,x>res

第二次while迴圈:res=12,x=1,x比如輸入數字1221

第一次while迴圈:res=1,x=122,x>res

第二次while迴圈:res=12,x=12,x ==res

退出while迴圈,x ==res 所以返回1(true)

為什麼while的條件是x>res?

當x==res,說明兩個數的位數和值大小是一樣的,說明當前的x值是傳入函式時x的前半部分數字,此時的res是傳入函式的x的後半部分數字的逆置型

當xres,res和x還沒「相遇」,或者傳入函式的x是奇數個位的數,繼續while迴圈

統一讓x<=res,再退出while迴圈

最後根據return x == res / 10 || x == res;進行判斷

#include

bool ispalindrome

(int x)

//判斷數字是否回文

int res =0;

while

(x > res)

return x == res /

10|| x == res;

}int

main()

執行截圖如下:

回文數字判斷

題目描述 有這樣一類數字,他們順著看和倒著看是相同的數,例如 121 656 2332 等,這樣的數字就稱為 回文數字。編寫乙個函式,判斷某數字是否是回文數字。要求實現函式 int ispalindrome int inumber 輸入 inumber 整型數字 輸出 0 不是回文數字 1 是回文數...

判斷是否是回文

輸入 請輸入數時用空格隔開輸入你要判斷是否是回文的個數 1 5 9 9 5 1 輸出 您輸入的是回文 1 include stdio.h 2 define n 6 通過更改 n 的值,可以改變輸入的數的個數3 本題思想用陣列的第一位與最後一位相比,然後依次第二與倒數第二。4 但每輸入乙個數要用空格隔...

判斷乙個數字是否是回文

最近碰到乙個題目,其中一步判斷數字是否為回文 由於題目要求是最短時間實現,不要考慮實現本身的效率 1如果直接去實現,就是比較數字的最高位值和最低位,然後再。public boolean isp int x if x temp bit bit為數值位數 int temp1,temp2 for int ...