17 判斷乙個整數是否是回文數

2022-06-02 18:51:07 字數 968 閱讀 4909

回文數(或回文數)是指乙個像14641這樣「對稱」的數,即:將這個數的數字按相反的順序重新排列後,所得到的數和原來的數一樣。

判定乙個正整數是否是乙個回文數。例如12121是回文數,而1231不是回文數。

解法1:轉換成字串再判斷

要判斷乙個整數是否是回文數,最自然的想法是把整數轉換成乙個字串,然後根據回文的對稱特性進行判斷。數字轉換為字串可以通過itoa函式實現,判斷字串是否為回文字串**如下:

bool ispalindrome(string &str)

else

}return true;

}

解法2:數字翻轉法

因為是整數,所以可以求出該整數的翻轉後的數值,看是否與原來整數相等。如果相等,則是回文數,否則不是。翻轉整數**如下,返回值為翻轉後的整數。如12321翻轉後為12321,所以是回文數;而1231翻轉後為1321,與1231不相等,所以不是回文數。

int reverse(int num) 

return rev;

}

但是這裡有個潛在的問題就是翻轉後的整數可能會溢位,當然我們可以用long long之類的型別來儲存翻轉結果。但是這個解法總的來看並不完美,我們需要找乙個更通用的解法。

解法3:數字位判斷法

我們可以找到乙個更通用的解法,那就是先比較整數的第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是因為每次比較了兩個位。

判斷乙個整數是否是回文數

判定乙個正整數是否是乙個回文數。例如12121是回文數,而1231不是回文數。要判斷乙個整數是否是回文數,最自然的想法是把整數轉換成乙個字串,然後根據回文的對稱特性進行判斷。數字轉換為字串可以通過itoa函式實現,判斷字串是否為回文字串 如下 bool ispalindrome string str...

判斷乙個整數是否是回文數。

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...