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

Java程序匹配"barbara"仅在76位终止,9-16位不终止求解决

问题分析与解决建议

核心问题

你的代码无法匹配到9-16位置的"barbara",原因是匹配失败时没有回溯索引:一旦中途某个字符不匹配,程序会直接推进全局索引继续往后走,不会回到之前尝试匹配的起始位置的下一个字符重新检查,导致错过前面的有效匹配。

比如输入中9-16位置的"barbara",当程序从第一个"b"开始匹配,若中途某个字符不符合,索引直接跳走,不会回头检查这个"b"之后的字符是否能构成完整匹配。

解决方法

方法1:手动实现带回溯的匹配(适合理解匹配逻辑)

通过遍历每个位置,检查从当前位置开始是否能完整匹配目标字符串,匹配失败则移动到下一个位置继续尝试:

public class Main {
    private static String input = "p2ce9unfvbarbarbara2ehv29p4hrv2rn8h2cyr12gxbarsdg34rbarabarabarbarbarbarbarasdfgsfhhr";
    private static final String TARGET = "barbara";

    public static void main(String[] args) {
        int index = 0;
        // 遍历到输入字符串剩余长度足够容纳目标字符串的位置
        while (index <= input.length() - TARGET.length()) {
            boolean isMatched = true;
            // 检查当前位置开始的字符是否完全匹配目标
            for (int i = 0; i < TARGET.length(); i++) {
                if (input.charAt(index + i) != TARGET.charAt(i)) {
                    isMatched = false;
                    break;
                }
            }
            if (isMatched) {
                index += TARGET.length();
                break;
            }
            // 匹配失败,移动到下一个位置重试
            index++;
        }
        System.out.println(index);
    }
}

方法2:使用Java内置字符串匹配方法(简洁高效,适合新手)

直接利用Java String类的indexOf方法快速定位目标字符串,代码更简洁:

public class Main {
    private static String input = "p2ce9unfvbarbarbara2ehv29p4hrv2rn8h2cyr12gxbarsdg34rbarabarabarbarbarbarbarasdfgsfhhr";

    public static void main(String[] args) {
        String target = "barbara";
        // 获取目标字符串的起始索引
        int startIndex = input.indexOf(target);
        if (startIndex != -1) {
            // 终止时的索引为起始索引加上目标字符串长度
            System.out.println(startIndex + target.length());
        } else {
            System.out.println("未找到匹配的字符串");
        }
    }
}

两种方法都能正确匹配到输入中所有位置的"barbara",并在匹配到第一个实例时终止程序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:42:53