LeetCode算法題 —— 迴文數

LeetCode算法題 —— 迴文數

題目

迴文數,即一個整數,將它各位上的數字從左到右反過來得到的數字依然等於原來的整數。如1221反過來還是1221,所以它是迴文數。而-11反過來是11-,所以不是迴文數。那麼如何判斷一個整數是不是迴文數?

思路

第一種思路

將數字轉換爲字符串,然後反轉字符串,再與之前的比較看是否相等。

第二種思路

將整數最高位的數字取出,和整數末位的數比較是否相等,如果相等再取出第二位和倒數第二位的數字進行比較,依次類推。

代碼

1.轉換爲字符串

public Boolean isPalindrome(int x) {
        //轉換爲字符串
        StringBuffer numStr = new StringBuffer(x+"");
        //字符串反轉
        StringBuffer reverseNumStr = numStr.reverse();
        //比較
        if (numStr.equals(reverseNumStr)) {
            return true;
        }
        return false;
    }

2.取各位上的數字進行比較

public Boolean isPalindrome(int x) {
        //負數不可能是迴文數
        if (x < 0) {
            return false;
        }
        //尾數爲0不可能是迴文數,0除外。
        if (x % 10 == 0 && x != 0) {
            return false;
        }
        //循環取出首位和末位的數字進行比較
        int a = 10;
        //個位數肯定是迴文數
        if (x/a == 0) {
            return true;
        }
        while (x/a >= 10) {
            a = a*10;
        }
        while (x > 0) {
        	//考慮121這種情況
            if (a == 1) {
                return true;
            }
            
            int left = x / a;
            int right = x % 10;
            x = x % a;
            x = x / 10;
            if (left != right) {
                return false;
            }
            a = a / 100;
            
        }
        return true;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章