#LeetCode:9. Palindrome Number

灆洢 2018-09-29 02:18:21

簡單的方式是將數字變成字串之後頭尾向內比對即可。在這裡將原本的方法進化一下用不轉字串的方式,這方法就是把一半的數字倒過來後,看看倒過來的數字與原本的數字數值是否一樣。有幾個部分需要注意:

  1. 個位數為 0 的數字除了 0 本身以外都直接不符合,因為倒過來的數字不能開頭為 0 ,所以要先篩掉。
  2. 由於有可能會有奇數位共用的問題,所以除了相等以外還要將反轉後的數字消掉一位比比看。

C++(112ms)

/*******************************************************/
/* LeetCode 9. Palindrome Number                       */
/* Author: Maplewing [at] knightzone.studio            */
/* Version: 2018/10/01                                 */
/*******************************************************/
class Solution {
public:
  bool isPalindrome(int x) {
    if(x == 0) return true;
    if(x < 0 || x % 10 == 0) return false;

    int reverseX = 0;
    while(x > reverseX){
      reverseX = reverseX * 10 + x % 10;
      x /= 10;
    }

    return x == reverseX || x == reverseX / 10;
  }
};

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料