• 滑动窗口算法-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

  • 相关阅读:
    简单好用的日历排期控件
    Ext.js create store
    Ext.js页面添加元素
    Ext.js Tree
    前端设计的七大法则
    如何写软件开发相关文档,它包含哪些种类和内容
    行内文字末尾下降
    正则表达式
    滚动加载数据
    location.hash来保持页面状态
  • 原文地址:https://www.cnblogs.com/use-D/p/13278512.html
Copyright © 2020-2023  润新知