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<length;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不是回文!"); } } }