title: leetcode-9-回文數
date: 2019-08-31 08:42:55
categories:
-
leetcode
tags:
- leetcode
回文數
-
判斷一個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例 1:
輸入: 121
輸出: true
示例 2:
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。是以它不是一個回文數。
示例 3:
輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。是以它不是一個回文數。
進階:
你能不将整數轉為字元串來解決這個問題嗎?
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/palindrome-number
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
- 題解:首先判斷和0的大小關系,負數進行return,反之 把數字的每一位都取出來,看看能否傳回值等于原來的值
class Solution { public boolean isPalindrome(int x) { int number = x; int sum = 0; int rest; if(x<0) return false; while(x!=0) { rest = x%10; sum = sum*10+rest; x=x/10; } return number==sum?true:false; } }
- 第二種題解,對第一種題解進行優化,隻是反轉後半部分
public boolean isPalindrome(int x) {
if(x<0||(x%10==0&&x!=0))
return false;
int midNumber = 0;
while(x>midNumber)//判斷是否反轉了一半
{
midNumber = midNumber*10+x%10;
x = x/10;
}
//有兩種最終情況12321反轉123,1221反轉12,是以需要判斷
return x==midNumber||x==midNumber/10;
}