You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java仅使用Stack的push/pop/peek查找循环停止索引问题求助

问题根因
  • 核心问题是你使用了contains()方法做模糊匹配,而需求要求匹配完整的停止值,该方法存在大量匹配失效场景:比如输入的目标值两端带有多余空格、输入内容大小写不匹配、存在子串混淆的情况,都会导致本该匹配成功的条件返回false。你遇到的返回4的问题,就是因为循环全程没有触发break条件,走完所有n次循环后index累计为4。
  • 你写的栈匹配逻辑本身规则是正确的:第一次匹配到栈顶元素时index为0,弹出1次后匹配成功index为1,完全符合需求给出的示例要求。
修复方案

将匹配逻辑替换为equals()方法做精准匹配,可额外添加trim()去除输入内容两端的空白字符,避免手动输入时误加空格导致匹配失败。
修复后的循环代码如下:

for (int i = 0; i < n; i++) {
    if (books.peek().trim().equals(str.trim())) {
        break;
    }
    books.pop();
    index++;
}

如果校方需求允许模糊匹配(即包含目标子串就算匹配成功),可以调整为忽略大小写的模糊匹配逻辑:

for (int i = 0; i < n; i++) {
    if (books.peek().trim().toLowerCase().contains(str.trim().toLowerCase())) {
        break;
    }
    books.pop();
    index++;
}

内容的提问来源于stack exchange,提问作者Audrey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:57:04