判斷輸入的數字是否回文。
題目
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) { 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;
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