zoukankan      html  css  js  c++  java
  • 滑动窗口算法-1

    给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串?

    输入: S = "ADOBECODEBANC", T = "ABC"
    输出: "BANC"
        public static void main(String[] args) {
            System.out.println(t());
        }
        public static String t() {
            String st = "ADOBECODEBANC";
            String subSt = "ABC";
            int startIndex = 0;
            int endIndex = 0;
            String strMinLen = "";
            while (endIndex <= st.length() && startIndex <= endIndex) {
                boolean flag = containSubStr(st, startIndex, endIndex, subSt);
                if (!flag) {
                    endIndex++;
                }
                if (flag) {
                    strMinLen = "".equals(strMinLen) ? st.substring(startIndex, endIndex) : (strMinLen.length() > st.substring(startIndex, endIndex).length() ? st.substring(startIndex, endIndex) : strMinLen);
                    startIndex++;
                }
            }
            return strMinLen;
        }
    
        public static boolean containSubStr(String orgStr, int startIndex, int endIndex, String subStr) {
            String orgStrTemp = orgStr.substring(startIndex, endIndex);
            System.out.println("orgStrTemp=" + orgStrTemp);
            char[] orgStrCharArray = orgStrTemp.toCharArray();
            char[] subCharArray = subStr.toCharArray();
            int subLen = subCharArray.length;
            for (char s : subCharArray) {
                for (char o : orgStrCharArray) {
                    if (s == o) {
                        subLen--;
                        break;
                    }
                }
            }
            return subLen <= 0;
        }
    算法参考:https://www.zhihu.com/question/314669016
  • 相关阅读:
    Shell命令之文本操作
    乘法表
    万年历
    猜数游戏
    Linux下如何进行FTP安装与设置
    CentOS 安装nload(流量统计)
    linux下创建用户并且限定用户主目录
    ftp 解决不能上传问题
    【题解】[TJOI2018]数学计算
    【平衡树做题记录】
  • 原文地址:https://www.cnblogs.com/use-D/p/13278141.html
Copyright © 2011-2022 走看看