LeetCode Note Java 00009:Palindrome Number

判斷輸入的數字是否回文。

題目

Palindrome Number Easy

Given an integer x, return true if x is a palindrome, and false otherwise.

我的解法

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public boolean isPalindrome(int x) {
String xs = new String("" + x);
char[] xca = xs.toCharArray();
for (int i = 0; i < xca.length; i++) {
if (xca[i] != xca[xca.length - 1 - i]) {
return false;
}
}
return true;
}
}

將 int 做成 String,再轉成 charArray,最後用迴圈比較頭尾是否相同。

檢討

我應該是不想處理數字,所以傾向於轉換成文字,但講究時間或空間效率的好像不建議這樣做。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Solution {
static int v;
public static boolean isPalindrome(int x) {
//optimizations
if(x<0) return false;
if(x<10) return true;
if(x%10==0) return false;
if(x<100&&x%11==0) return true;
if(x<1000&&((x/100)*10+x%10)%11==0) return true;

//actual logic
v=x%10;
x=x/10;
while(x-v>0)
{
v=v*10+x%10;
x/=10;
}
if(v>x){v/=10;}
return v==x?true:false;
}
}

看到別人先判斷了一些快捷選項來減少計算,覺得可能滿重要的,不過解題通常都是想要快且正確,思考這些不知道是不是對實際開發比較好?

參考資料

[9 ms JAVA] Beats 99.5 java solutions, easy to understand