回文判断
回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。
输入格式:
输入待判断的字符序列,按回车键结束,字符序列长度<20。
输出格式:
若字符序列是回文,输出“YES”;否则,输出“NO”。输入样例:
abdba
输出样例:
YES
方法一:java stack完成
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String t=input.next();
char[] data=t.toCharArray();
char[] out=new char[data.length];
Stack<Character> stack = new Stack<>();
for (int i=0;i<data.length;i++){
stack.push(data[i]);
}
for (int j=0;j<data.length;j++){
out[j]=stack.pop();
}
int r=0;
for (int i=0;i<data.length;i++){
if (data[i]!=out[i]){
System.out.println("NO");
break;
}else
r=r+1;
}
if (r==data.length)
System.out.println("YES");
}
}
方法二:原生态编程
import java.lang.reflect.Array;
import java.util.Scanner;
interface IStack<E>{
E push(E item);
E pop();
}
class SeqStack<E> implements IStack<E>{
private int maxsize;
private E[] data;
private int top;
public SeqStack(Class<E>type,int size){
data=(E[])Array.newInstance(type,size); //顺序栈的容量
maxsize=size;
top=-1;//指示顺序栈的栈顶,此时栈为空
}
//入栈操作
public E push(E item){
if (!isFull()){
data[++top]=item;
return item;
}else
return null;
}
//出栈操作
public E pop(){
E item=null;
if(!empty()){
item=data[top--];
}
return item;
}
//判断顺序栈是否为空
private boolean empty(){
if (top==-1){
return true;
}else
return false;
}
//判断顺序栈是否为满
public boolean isFull(){
if (top==maxsize-1)
return true;
else
return false;
}
}
public class Main{
public static void main(String [] args){
Scanner input=new Scanner(System.in);
String t=input.next();
char[] data=t.toCharArray();
char[] out=new char[data.length];
IStack<Character>stack= new SeqStack<>(Character.class, data.length);
for (int i=0;i<data.length;i++){
stack.push(data[i]);
}
for (int j=0;j<data.length;j++){
out[j]=stack.pop();
}
int r=0;
for (int i=0;i<data.length;i++){
if (data[i]!=out[i]){
System.out.println("NO");
break;
}else
r=r+1;
}
if (r==data.length)
System.out.println("YES");
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)