英文题目
Palindrome Number
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
一个整数 backward 以后还是 这个数
Example1:
Input: 121
Output: true
Example 2:
Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:
Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Follow up:
Coud you solve it without converting the integer to a string?
你能不把它转化为string 解决吗?
思路:
转化为String找到中间位置然后 比较是否一样
解答:
class Solution {
public boolean isPalindrome(int x) {
String a = String.valueOf(x);
int len = a.length();
int index = (len-1)/2;
if(len % 2 ==0){
int left = index;
int right = index + 1;
while (left >=0 && right < len){
if(a.charAt(left) == a.charAt(right)){
left--;
right++;
}else{
return false;
}
}
}else{
int left = index;
int right = index;
while (left >=0 && right < len){
if(a.charAt(left) == a.charAt(right)){
left--;
right++;
}else{
return false;
}
}
}
return true;
}
}
提高
不使用string 直接进行反转 如果反转相等就正确,溢出则错误。
class Solution {
public boolean isPalindrome(int x) {
if(x < 0){
return false;
}
int x1 = x;
int resever = 0;
while(x1 != 0){
resever = resever*10 +x1%10;
x1 = x1/10;
}
if(resever == x){
return true;
}
return false;
}
}