Leetcode(3)迴文數
阿新 • • 發佈:2018-12-20
題目 判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false 解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴文數。 示例 3: 輸入: 10 輸出: false 解釋: 從右向左讀, 為 01 。因此它不是一個迴文數。
解題思路 第一種最簡單的就是根據上回做的翻轉整數,然後判斷是否與原始資料相等既可以判斷其是否為迴文: 程式碼如下
class Solution { public: bool isPalindrome(int x) { if (x<0) return false; long long int sum =0; long long int origin = x; while(x) { int num = x %10; sum = sum*10 + num; x/=10; } if(sum == origin) return true; else return false; } };
第二種的話依次判斷數字的首位與末尾位時候相同,然後向下輪換,直到最中間一個或者最中間兩個;
class Solution { public: bool isPalindrome(int x) { if(x<0) return false; int div=1; while(x/div>=10) { div*=10; } while(x!=0) { int l=x/div; int r=x%10; if(l!=r) return false; x=(x%div)/10; div/=100; } return true; } };