华为OD机试E卷-增强的strstr(100分) JAVA

* 样例输入* abcd bc[cd]
* 样例输出
* 1
* 样例解释
* 目标字符串 "bc[cd]" 可以匹配 "bcc" 或 "bcd"。在源字符串 "abcd" 中,"bcd" 子字符串的起始位置是 1。
* abcdefd de[fd]
* 输出:3
* abcdefd dc[fd]
* 输出:-1
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String[] inputs = in.nextLine().split(" ");
        String origin = inputs[0];
        String needle = inputs[1];
        System.out.println(strsrt(origin, needle));
    }

    private static int strsrt(String origin, String needle) {
        String[] needles = needle.split("\\[");
        String must = needles[0];
        List<Character> list = new ArrayList<>();
        String fuzzy = needles[1].replace("]", "");
        for (int i = 0; i < fuzzy.length(); i++) {
            list.add(fuzzy.charAt(i));
        }

        for (int i = 0; i <= origin.length() - must.length(); i++) {
            boolean found = true;
            for (int j = 0; j < must.length(); j++) {
                if (origin.charAt(i + j) != must.charAt(j)) {
                    found = false;
                    break;
                }
            }
            //判断是否fuzzy字符串存在后续的charAt
            if (found) {
                if (list.contains(origin.charAt(i +must.length()))) {
                    return i;
                }
            }
        }
        return -1;
    }

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务