滑动窗口算法-3

Posted use-d

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了滑动窗口算法-3相关的知识,希望对你有一定的参考价值。

给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引?
输入:
s: "cbaebabacd" p: "abc"

输出:
[0, 6]
解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的字母异位词。
起始索引等于 6 的子串是 "bac", 它是 "abc" 的字母异位词。

 

public static void main(String[] args) {
        int[] indexA = t();
        for (int i = 0; i < indexA.length; i++) {
            System.out.print(indexA[i]);
        }
    }


    public static int[] t() {
        String st = "cbaebabacdabc";
        String targetStr = "abc";
        int startIndex = 0;
        int endIndex = targetStr.length();
        int index = 0;
        int[] indexA = new int[st.length() - targetStr.length()];
        for (int i = endIndex; i <= st.length(); i++) {
            boolean flag = repetitionSubStr(st, i - targetStr.length(), i, targetStr);
            System.out.println("===" + flag);
            if (flag) {
                indexA[index] = startIndex;
                index++;
            }
            startIndex++;
            i++;
        }
        return indexA;
    }

    public static boolean repetitionSubStr(String orgStr, int startIndex, int endIndex, String targetStr) {
        String orgStrTemp = orgStr.substring(startIndex, endIndex);
        System.out.print("orgStrTemp=" + orgStrTemp + "====endIndex=" + endIndex);
        char[] orgStrCharArray = orgStrTemp.toCharArray();
        char[] targetStrCharArray = targetStr.toCharArray();
        int len = targetStrCharArray.length;
        for (char s : orgStrCharArray) {
            for (int i = 0; i < targetStrCharArray.length; i++) {
                if (targetStrCharArray[i] != ‘‘ && s == targetStrCharArray[i]) {
                    targetStrCharArray[i] = ‘‘;
                    len--;
                    continue;
                }
            }
        }
        return len == 0;
    }

算法参考:https://www.zhihu.com/question/314669016

以上是关于滑动窗口算法-3的主要内容,如果未能解决你的问题,请参考以下文章

基础算法滑动窗口

滑动窗口算法

滑动窗口算法

算法学习——剑指 Offer II 041. 滑动窗口的平均值(Java实现)

算法学习——剑指 Offer II 041. 滑动窗口的平均值(Java实现)

华为OD机试 -滑动窗口最大和(Java) | 机试题+算法思路+考点+代码解析 2023