import java.util.ArrayList;
import java.util.List;
public class StackTest {
/**
* @param args
*/
public static void main(String[] args) {
String str = "abcba";
System.out.println(str + "回文数:" + isPalindrome(str));
str = "abccba";
System.out.println(str + "回文数:" + isPalindrome(str));
str = "123321";
System.out.println(str + "回文数:" + isPalindrome(str));
str = "1238887321";
System.out.println(str + "回文数:" + isPalindrome(str));
}
/**
*判断输入字符串是否为回文
* @param pValue String 输入待判定的字符串
* @return boolean 是否是回文
*/
public static boolean isPalindrome(String pValue){
// 堆栈一
Liststack = new ArrayList ();
// 堆栈二
Liststack2 = new ArrayList ();
// 字符串长度的一半
int haflen = pValue.length()/2;
for(int i=0;i// 字符进栈
stack.add(pValue.charAt(i));
// 倒序进栈
stack2.add(pValue.charAt(pValue.length()-i-1));
}
// 标识符
boolean bFlag = true;
// 出栈并比较
for(int i=haflen-1;i>=0;i--){
if(stack.remove(i) != stack2.remove(i)){
bFlag = false;
break;
}
}
// 返回比对结果
return bFlag;
}
}
你这是作业题吧,其实最简单直接用循环然后charAt()把第一个和最后一个取出来比较就可以了。要用栈的话,我就用List来模拟栈。我们知道栈只有两个基本的操作进栈和出栈,用ArrayList的add(),remove()来模拟进栈和出栈。上面的代码和你的思路是一样的,但是简化掉奇偶数的判定,因为是奇数的时候,最中间一个我们可以不用管它,是偶数的话就是前半部分和后半部分的比较。
你这种普遍的输出固然没问题。。但是,如果要用栈处理如下的话,可能就会出错了:
abccbaab11ba
一般处理回文不会用栈结构。。当然,如果你说用两个栈的话,就没什么意义了