首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用堆栈检查字符串是回文。

使用堆栈检查字符串是回文。
EN

Stack Overflow用户
提问于 2019-05-25 11:52:06
回答 4查看 644关注 0票数 1

我想使用java中的堆栈实现来检查字符串是否回文。我尝试过许多方法,但这并没有给我正确的答案。有人能帮我吗?

我在我的类中实现了一个变量名为"stackArray“的堆栈。

回文法:

代码语言:javascript
运行
复制
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.");

司机代码:

代码语言:javascript
运行
复制
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“是回文,但它总是说”输入字符串不是回文。“

EN

Stack Overflow用户

回答已采纳

发布于 2019-05-25 12:27:40

您的解决方案至少有两个基本问题:

  1. 您将弹出s1,直到它为空,然后执行回文检查。
  2. s1和反转器不是相同的数据类型。

1)暂时忽略项目2,当您使用s1来确定输入是否为回文时,它看起来是空的。您需要确保在进行等效检查时,两个变量都指向包含数据的结构!

2) s1是堆栈,反转器是String[]。Stack中的“equals”的默认实现是检查参数是否是堆栈的实例。因为永远不会出现这种情况,所以您将始终看到“输入字符串不是回文”。

要修复2),需要使两个对象都具有相同的数据类型(无论是堆栈还是String[])。如果选择后一个String[],则需要验证每个索引i处的字符串在s1和反转器中都是等效的。

希望这能有所帮助!

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56304575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档