Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Example 1:
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?
题意即为判断是否是回文数,可以使用栈和队列进行实现或者是使用递归来实现
《one》
import java.util.*;
class Solution {
public boolean isPalindrome(int x) {
if(x < 0){
return false;
}
int y = x;
Queue<Integer> queue = new LinkedList<>();
Stack<Integer> stack = new Stack<>();
while(y != 0){
queue.offer(y % 10);
stack.push(y % 10);
y /= 10;
}
while(!stack.isEmpty()&&!queue.isEmpty()){
if(stack.pop() != queue.poll()){
return false;
}
}
return true;
}
}
《Two》
public boolean isPalindrome(int x) {
// 如果是负数,或者10的整数倍,返回false
if (x < 0 || x != 0 && x % 10 == 0)
return false;
int reverse = 0;
while (x > reverse) {
reverse = reverse * 10 + x % 10;
x = x / 10;
}
return (reverse == x || reverse / 10 == x);
}