用堆栈和队列实现判断回文
/**
* @descript: 自定义队列类
* 根据需要只提供插入,取出,判断是否为空方法
* @author : dalily
* @date : 2004-3-27
*/
import java.util.*;
public class Queue
{
//存储队列中数据
private List list = new ArrayList();
//队列中的起始位置
private int iPosition = 0;
//队列插入
public void insert(Object obj){
list.add(obj);
}
//队列取出
public Object get(){
Object obj = list.get(iPosition);
list.remove(iPosition);
return obj;
}
//队列是否为空
public boolean isEmpty(){
return list.size()==0?true:false;
}
}
/**
* @descript: 判断字符串是否为回文
* @author : dalily
* @date : 2004-3-27
*/
import java.util.Stack;
public class ReturnString{
//将原始数据压入到堆栈里面
public static Stack pushStack(String strTemp){
Stack stack = new Stack();
for (int i = 0;i<strTemp.length();i++){
stack.push(String.valueOf(strTemp.charAt(i)));
}
return stack;
}
//将原始数据存入队列
public static Queue insertQueue(String strTemp){
Queue queue = new Queue();
for (int i = 0;i<strTemp.length();i++){
queue.insert(String.valueOf(strTemp.charAt(i)));
}
return queue;
}
//判断队列和堆栈是否相等
public static boolean isEquals(Stack stack, Queue queue){
boolean bFlag = true;
//存储临时堆栈内容
String strTempStack = "";
//存储临时队列内容
String strTempQueue = "";
//循环判断不相等的字符
while (!stack.empty()){
strTempStack = stack.pop().toString();
strTempQueue = queue.get().toString();
if (!strTempStack.equals(strTempQueue)){
bFlag = false;
}
}
return bFlag;
}
//判断该字符串是否为回文
public static boolean isReturnString(String str){
Stack stack = pushStack(str);
Queue queue = insertQueue(str);
return isEquals(stack,queue);
}
//测试程序
public static void main(String[] args)
{
String strTest = "ads112da";
System.out.println("the result is :" + isReturnString(strTest));
}
}