1. 程式人生 > 實用技巧 >Lettcode刷題筆記(三)

Lettcode刷題筆記(三)

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; } }