所谓回文字符串,是指从左到右读和从右到左读完全相同的字符串。
/**
* @Author huang.bX
* @Date 2021/7/12
*/
public class ArrayStack {
//定义栈的大小
private final int maxStack;
//栈顶所在位置 默认没有数据时为-1
private int top = -1;
//数组模拟栈
private final int[] stack;
public ArrayStack(int maxStack){
this.maxStack = maxStack;
stack = new int[maxStack];
}
public boolean isFull(){
return this.top == maxStack-1;
}
public boolean isEmpty(){
return this.top == -1;
}
//入栈判满 出战判空
public void push(int val){
if(isFull()){
throw new RuntimeException("此栈已满!");
}
top++;
stack[top] = val;
}
public int pop(){
if(isEmpty()){
throw new RuntimeException("此栈为空!");
}
int val = stack[top];
top--;
return val;
}
//查看栈中所有数据
public void list(){
if(isEmpty()){
throw new RuntimeException("此栈为空,无数据!");
}
for(int i=0;i<stack.length;i++){
System.out.printf("stack[%d]=%d\n",i,stack[i]);
}
}
public int length(){
return this.top + 1;
}
}
测试类:
/**
* @Author huang.bX
* @Date 2021/7/12
*/
public class TestArrayStack {
public static void main(String[] args) {
System.out.println(huiWen("hello"));
System.out.println(huiWen("aba"));
}
public static boolean huiWen(String val){
ArrayStack arrayStack = new ArrayStack(10);
//获得字符串长度
int length = val.length();
//将字符串一个个字符压入栈
for(int i=0;i<length;i++){
arrayStack.push(val.charAt(i));
}
String newVal = "";
int length1 = arrayStack.length();
for(int i=0;i< length1;i++){
if(!arrayStack.isEmpty()){
char pop = (char) arrayStack.pop();
newVal = newVal + pop;
}
}
if(val.equals(newVal)){
return true;
}
return false;
}
}
测试结果: