Leecode no.9 判断回文数

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));


}

}
posted @ 2020-11-26 11:04  六小扛把子  阅读(81)  评论(0编辑  收藏  举报