leetcode題庫——迴文數
阿新 • • 發佈:2018-12-15
題目描述:
判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例 1:
輸入: 121 輸出: true
示例 2:
輸入: -121 輸出: false 解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴文數。
示例 3:
輸入: 10 輸出: false 解釋: 從右向左讀, 為 01 。因此它不是一個迴文數。
進階:
你能不將整數轉為字串來解決這個問題嗎?
方法:
class Solution { public: bool isPalindrome(int x) { if(x<0) return false; if(x==0) return true; if(x>0) { int i,p=0; int flag=x; int num[20]; for(i=0;flag>0;i++) { num[i]=flag%10; flag=(flag-num[i])/10; } for(int j=0;j<i;j++) p=p+num[j]*pow(10,i-j-1); if(p==x) return true; else return false; } } };
思路:
除了將整數轉換成字串的方法外,還可以設一個整數陣列來記錄整數。將整數的每個數字通過取餘的辦法放到整數陣列中,剛好是原整數的逆序排列,所以只需將整數陣列再組合成一個整數後,與原整數比較是否相等即可。