算法描述 :
判斷一個整數(shù)是否是回文數(shù)讼稚∏缁回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)。
示例 1:
輸入: 121
輸出: true
示例 2:
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 趟畏。 從右向左讀, 為 121- 稻励。因此它不是一個回文數(shù)。
示例 3:
輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是一個回文數(shù)粤攒。
進階:
你能不將整數(shù)轉(zhuǎn)為字符串來解決這個問題嗎?
算法實現(xiàn) :
Java實現(xiàn) :
class Solution {
public boolean isPalindrome(int x) {
if (x < 0) { // 負數(shù)必然不是回文數(shù)
return false;
} else if (x < 10) { // 0~9中間的數(shù)必然是回文數(shù)
return true;
}
// 將大于等10的數(shù)轉(zhuǎn)換為字符串
String s = String.valueOf(x);
char[] nums = s.toCharArray();
int i = 0; // 左索引
int j = nums.length - 1; // 右索引
while (i < j) {
if (nums[i] != nums[j]) { // 若左索引的值和右索引的值不等,則不是回文數(shù)
return false;
} else { // 左索引右移, 右索引左移
i++;
j--;
}
}
return true;
}
}