題目如下:
判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例 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 ...