我想使用java中的堆栈实现来检查字符串是否回文。我尝试过许多方法,但这并没有给我正确的答案。有人能帮我吗?
我在我的类中实现了一个变量名为"stackArray“的堆栈。
回文法:
Stack s1 = new Stack(5);
for (int i = 0; i < 5; i++) {
s1.push(stackArray[i]);
}
String [] reverser = new String[5];
while (!s1.isEmpty()) {
int count = 0;
reverser[count] = s1.pop();
count++;
}
if (s1.equals(reverser)){
System.out.println("The input String is a palindrome.");
}
else
System.out.println("The input String is not a palindrome.");司机代码:
public static void main(String[] args) throws Exception {
Stack st = new Stack(5);
st.push("l");
st.push("e");
st.push("v");
st.push("e");
st.push("l");
System.out.println("");
System.out.println("When Palindromic is starting; ");
System.out.println("");
st.palindromic();
}很明显,单词"level“是回文,但它总是说”输入字符串不是回文。“
发布于 2019-05-25 12:27:40
您的解决方案至少有两个基本问题:
1)暂时忽略项目2,当您使用s1来确定输入是否为回文时,它看起来是空的。您需要确保在进行等效检查时,两个变量都指向包含数据的结构!
2) s1是堆栈,反转器是String[]。Stack中的“equals”的默认实现是检查参数是否是堆栈的实例。因为永远不会出现这种情况,所以您将始终看到“输入字符串不是回文”。
要修复2),需要使两个对象都具有相同的数据类型(无论是堆栈还是String[])。如果选择后一个String[],则需要验证每个索引i处的字符串在s1和反转器中都是等效的。
希望这能有所帮助!
https://stackoverflow.com/questions/56304575
复制相似问题