Lettcode刷題筆記(三)
阿新 • • 發佈:2020-10-21
9. 迴文數
示例 1:
輸入: 121
輸出: true
示例2:
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴文數。
示例 3:
輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是一個迴文數。
思路:這道題有兩種解法。1.轉換為字串,然後判斷前後字串是否相等。2.利用演算法讓數字變數反轉。
我的解法是第一種:
class Solution { public boolean isPalindrome(int x) { Integer a=new Integer(x); String b=a.toString(); int n=b.length(); boolean re=true; for(int i=0;i<b.length();i++){ //擷取字串進行判斷 if(b.substring(i,i+1).equals(b.substring(n-i-1,n-i))){ }else{ re=false; } } return re; } }
2.其他大佬的解法
class Solution { public boolean isPalindrome(int x) { //如果x為負數或個位數為0的數一定不是迴文數 if(x<0||(x>0&&x%10==0)){ return false; } int reverseNum=0; //當x小於或等於reverseNum時,反轉完成 while (x>reverseNum){ reverseNum=reverseNum*10+x%10; x/=10; } //reverseNum%10==x考慮的是奇數的情況,reverseNum取多了一位,需要去掉再比較 return reverseNum==x||reverseNum/10==x; } }