題型解說
這是一題難度為簡單的題目
需要設計一個方法,此方法會傳入一個整數 x
確認將 x 反轉後是否依然為原樣,簡單來說就是正著讀反著讀是不是都一樣
範例:
x = 121,則回傳 true
x = -121,則回傳 false,因為 -121 不等於 121-
x = 10,則回傳 false
另外題目有說試著不要將數字轉成字串來解解看
解題思路
第一步判斷 x 如果小於 0 就回傳 false,如果小於 10 就回傳 true
之後看是要用數字的四則運算來求解還是轉成字串求解都可以
如果選擇用數字來求解,步驟與 [LeetCode] #7 Reverse Integer 解題 一樣
如果選擇用字串來求解,可以用一個 while 迴圈搭配兩個索引來確認
第一個索引是字串的開頭,第二個索引是字串的結尾
每次比對一個 char,如果不一樣就直接回傳 false
程式碼
Java
第一種解法
class Solution {
public boolean isPalindrome(int x) {
if (x < 0 || (x %10 == 0 && x != 0)) {
return false;
}
if (x < 10) {
return true;
}
int temp1 = 0;
int temp2 = x;
while (temp2 != 0) {
temp1 = temp1 *10 + temp2 %10;
temp2 /= 10;
}
return temp1 == x;
}
}
第二種解法
class Solution {
public boolean isPalindrome(int x) {
if (x < 0) {
return false;
}
if (x < 10) {
return true;
}
String s = String.valueOf(x);
int index1 = 0;
int index2 = s.length() -1;
while (index1 < index2) { // 如果數字的個數是奇數,最中間的數字可以不用比對
if (s.charAt(index1) != s.charAt(index2)) {
return false;
}
index1++;
index2--;
}
return true;
}
}