题解 | #回文数字#
回文数字
http://www.nowcoder.com/practice/35b8166c135448c5a5ba2cff8d430c32
import java.util.*;
public class Solution {
/**
*
* @param x int整型
* @return bool布尔型
*/
public boolean isPalindrome (int x) {
// write code here
if (x < 0) { // 如果 x 是负数,那么 x 一定不是回文数字
return false;
}
if (x >= 0 && x <= 9) { // 如果 x 在 [0, 9] 这个范围内的数字,那么 x 一定是回文数字
return true;
}
boolean rs = true; // 定义一个 boolean 类型的变量,用于存放最终的返回结果(默认是 true)
Queue<Integer> queue = new LinkedList<>();
Stack<Integer> stack = new Stack<>();
int tmp = x; // 定义一个整型变量,用于存放一个 x 的副本
while (x != 0) {
queue.add(x % 10); // 取余数,入队列
stack.push(x % 10); // 取余数,压栈
x = x / 10;
}
// 此时,队列当中存放的数据,是 x 的反向遍历的结果;栈当中存放的数据,是 x 的正向遍历的结果
// 定义两个整型变量,用于临时存放从队列和栈中弹出的数据
int t1 = 0;
int t2 = 0;
while (!queue.isEmpty() && !stack.isEmpty()) {
t1 = queue.poll();
t2 = stack.pop();
if (t1 != t2) { // 如果 t1 不等于 t2,那么证明数字 x 不是回文数字
rs = false;
break;
}
}
// 返回最终的结果
return rs;
}
}