leetcode 7 :
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
1.考虑输入的正负。
2.考虑是否越界。
代码:
public class Solution {
public int reverse(int x) {
int flag=0;
long result=0;
if(x<0){
flag=1;
x=-x;
}
int lastDigit=0;
while(x>0){
lastDigit=x-x/10*10;
result=result*10+lastDigit;
x=x/10;
}
if(flag==1){
result=-result;
}
if(result>Integer.MAX_VALUE||result<Integer.MIN_VALUE){
result=0;
}
return (int) result;
}
}
leetcode 9 :
Determine whether an integer is a palindrome. Do this without extra space.
Some hints:
Could negative integers be palindromes? (ie, -1)
If you are thinking of converting the integer to string, note the restriction of using extra space.
You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case?
There is a more generic way of solving this problem.
思路:1.负数不是回文的。
2.不可以使用额外的空间。
3.可以利用反转的方法,但是要考虑到越界问题。
代码:
public class Solution {
public boolean isPalindrome(int x) {
if(x<0) return false;
else{
long result=0;
int y=x;
int lastDigit=0;
while(y>0){
lastDigit=y-y/10*10;
result=result*10+lastDigit;
y=y/10;
}
if(result>Integer.MAX_VALUE||result<Integer.MIN_VALUE) return false;
else if(result==x) return true;
else return false;
}
}
}