java只用栈判断字符串是否回文
比如输入abcba,abccba,123321,结果输出回文。注意是只用栈哦!先谢谢了!!!思路我已经想好了:先定义一个数组放输入的字符串,若字符串长度为奇数,则去掉最中...
比如输入abcba,abccba,123321,结果输出回文。注意是只用栈哦!先谢谢了!!!
思路我已经想好了:先定义一个数组放输入的字符串,若字符串长度为奇数,则去掉最中间的,前一半字符串入栈,然后与后一半相对应作比较,若完全相同,则输出回文。若字符串长度为偶数,则直接把前一半入栈,然后与后一半相对应的作比较,若完全相同,输出回文。
不知道能不能实现,我写了半天没写成功,求大神指导!! 展开
思路我已经想好了:先定义一个数组放输入的字符串,若字符串长度为奇数,则去掉最中间的,前一半字符串入栈,然后与后一半相对应作比较,若完全相同,则输出回文。若字符串长度为偶数,则直接把前一半入栈,然后与后一半相对应的作比较,若完全相同,输出回文。
不知道能不能实现,我写了半天没写成功,求大神指导!! 展开
2个回答
展开全部
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));
}
/**
* <p>判断输入字符串是否为回文</p>
* @param pValue String 输入待判定的字符串
* @return boolean 是否是回文
*/
public static boolean isPalindrome(String pValue){
// 堆栈一
List<Character> stack = new ArrayList<Character>();
// 堆栈二
List<Character> stack2 = new ArrayList<Character>();
// 字符串长度的一半
int haflen = pValue.length()/2;
for(int i=0;i<haflen;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()来模拟进栈和出栈。上面的代码和你的思路是一样的,但是简化掉奇偶数的判定,因为是奇数的时候,最中间一个我们可以不用管它,是偶数的话就是前半部分和后半部分的比较。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询