leetcode-9. 迴文數。 判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false 解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是 ...
leetcode-9. 迴文數。
判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例 1:
輸入: 121
輸出: true
示例 2:
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴文數。
示例 3:
輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是一個迴文數。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problemset/all/
著作權歸領扣網路所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
// 將所有數位進行反轉.
bool isPalindrome( int x ) {
unsigned answer = 0;
if( x < 0 ) {
return 0;
}
for( int x1 = x; x1 != 0; x1 /= 10 ) {
answer = answer * 10 + x1 % 10;
}
return answer == (unsigned)x;
}
// 將後一半的低數位進行反轉.
bool isPalindrome( int x ) {
int answer = 0;
if( (x < 0) || (x != 0 && x % 10 == 0) ) { // 除了0以外的個位為0的數一定不是迴文數.
return 0;
}
for( answer = 0; answer < x; x /= 10 ) {
answer = answer * 10 + x % 10;
}
return answer == x || answer / 10 == x; // 例如 121, 反轉後一半低數位後為 12, 而前一半高數位為 1.
}