判定乙個正整數是否是乙個回文數。例如12121是回文數,而1231不是回文數。
要判斷乙個整數是否是回文數,最自然的想法是把整數轉換成乙個字串,然後根據回文的對稱特性進行判斷。數字轉換為字串可以通過itoa函式實現,判斷字串是否為回文字串**如下:
bool ispalindrome(string &str)
else
} return
true;
} 因為是整數,所以可以求出該整數的翻轉後的數值,看是否與原來整數相等。如果相等,則是回文數,否則不是。翻轉整數**如下,返回值為翻轉後的整數。如12321翻轉後為12321,所以是回文數;而1231翻轉後為1321,與1231不相等,所以不是回文數。
int reverse(int num)
return rev;
}
但是這裡有個潛在的問題就是翻轉後的整數可能會溢位,當然我們可以用long long之類的型別來儲存翻轉結果。但是這個解法總的來看並不完美,我們需要找乙個更通用的解法。
我們可以找到乙個更通用的解法,那就是先比較整數的第1位和最後1位是否相等,如果不等,則直接返回false;若相等,則接下去判斷剩下的位置,如同回文字串判斷的過程一樣。**如下:
bool ispalindrome(int x)
while (x != 0)
return
true;
}
如整數為121,則div初始會設為100,因此l=21/100=1是整數的第1位,而r=121%10=1是最後1位。這兩位相等,則繼續迴圈,設定x為第2為2,此時div除以100變成1,之所以div除以100是因為每次比較了兩個位。
判斷乙個整數是否是回文數。
1 c語言不允許函式巢狀定義。解決辦法就是將函式放到外面定義。2 c語言裡沒有bool型true,false。需要自己定義 define bool int define true 1 define false 0或者使用標頭檔案stdbool.h。判斷乙個整數是否是回文數。include defin...
判斷乙個整數是否是回文數
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。package leetcode class solu...
判斷乙個整數是否是回文數
includechar palindromes number unsigned int number int main void else return 0 函式功能 判斷是否是回文數 函式形參 number 輸入的資料 函式返回值 0 表示輸入的資料是回文數 1 表示輸入的資料不是回文數 char...