package com.example.demo.leecode;
import java.util.Stack;
/**
* 判断回文整数
* @Date 2020/11/26
* @author Tang
*
* 请判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
*/
public class DeterminePalindrome {
/**
* 方法一 用栈数据结构,前一半先入栈,然后出栈和后一半逐个比较
* @param x
* @return
*/
public boolean execute1(int x){
int index = 0;
if(x <= 0){
return false;
}
String s = String.valueOf(x);
char[] chars = s.toCharArray();
Stack<Character> stack = new Stack<Character>();
//判断奇偶
if(chars.length % 2 == 0){
//入队一半
for(; index < chars.length/2; index++){
stack.push(chars[index]);
}
//出队一半作比较
//出现不一样的直接返回
for(; index < chars.length; index++){
if(stack.pop() != chars[index]){
return false;
}
}
}else{
for(; index < chars.length/2; index++){
stack.push(chars[index]);
}
//过滤掉中位数
index++;
for(; index < chars.length; index++){
if(stack.pop() != chars[index]){
return false;
}
}
}
return true;
}
/**
* 方法二 将数字反转,然后直接比较
* @param x
* @return
*/
boolean execute2(int x) {
if (x<0){
return false;
}
int sum =0;
int origin = x;
while(x != 0)
{
int num = x %10;
sum = sum*10 + num;
x/=10;
}
if(sum == origin){
return true;
}
return false;
}
public static void main(String[] args) {
DeterminePalindrome determinePalindrome = new DeterminePalindrome();
System.out.println(determinePalindrome.execute1(5885));
}
}