package com.algrothim.sample.plo;
/**
* @author yuan
*这一个判断一个字符串是否为回文的例子。
*里面借助三个重要的数据结构的知识:
*栈,队列,以及引用。
*此程序的原理是:根据栈的后进先出,以及队列的先进先出的原理。
*两个ADT是同步的,如果从栈出来的字符与从队列出来的字符全部一样,
*说明为回文:反之,则不是。
*这个方法很简单,效率可能不高,复杂度是O(n)。
*不过这个程序的ADT我们是不需要关心的。
*/
public class plotest {
/**
* @param args
*/
public static void main(String[] args) {
// 定义一个队列对象变量myQueue,栈对象变量myStack。
QueueReferenceBased myQueue=new QueueReferenceBased();
StackReferenceBased myStack=new StackReferenceBased();
String str=new String("refe1r");
char[] chr=str.toCharArray();//将字符串转换成字符数组。
int length=chr.length;
for(int i=0;i
{
myQueue.enqueue(chr[i]);
myStack.push(chr[i]);
}
boolean charEqual=true;
char queueFront,stackTop;
while(!myQueue.isEmpty()&&charEqual==true){
queueFront=myQueue.dequeue();
stackTop=myStack.pop();
if(queueFront==stackTop)
{
charEqual=true;
}
else
{
charEqual=false;
break;
}
}
if(charEqual==true)
{
System.out.println("str是回文!");
}
else
{
System.out.println("很抱歉,str不是回文!");
}
}
}