zoukankan      html  css  js  c++  java
  • 获取两个字符串的最大字串

    /*4.获取两个字符串中最大相同子串。比如:
        str1 = "abcwerthelloyuiodef“;str2 = "cvhellobnm"
        提示:将短的那个串进行长度依次递减的子串与较长
        的串比较。*/
        public static String getMaxSubString(String str1, String str2) {
            String maxStr = (str1.length() > str2.length()) ? str1 : str2;
            String minStr = (str1.length() < str2.length()) ? str1 : str2;
            int len = minStr.length();//子串的长度
            String substring;
            //外层循环:minStr子串的长度不断递减
            //内层循环:相应长度的子串的不断向后移动
            //判断条件:子串是否在maxStr中出现过
            for (int i = len; i > 1; i--) {//i是子串的字符数,i在不断的减少,且子串的字符数>1
                //字符串子串从左边开始向右移动
                for (int start = 0, end = i/*i是子串长度*/; end <= len; start++,end++) {
                    substring = minStr.substring(start, end);
                    if (maxStr.indexOf(substring) > 0) {
                        return substring;
                    }
                }
            }
            return null;
        }

     上面的写法还可以继续改进,如果两个字符串有两个以上的最大相同字串,那么这个算法只输出第一个子串,考虑用List存放最大长度的子串。

    public static List<String> getMaxSubString(String str1, String str2) {
            String maxStr = (str1.length() > str2.length()) ? str1 : str2;
            String minStr = (str1.length() < str2.length()) ? str1 : str2;
            int len = minStr.length();//子串的长度
            String substring;
            List<String> list = new ArrayList<>();
            //外层循环:minStr子串的长度不断递减
            //内层循环:相应长度的子串的不断向后移动
            //判断条件:子串是否在maxStr中出现过
            for (int i = len; i > 1; i--) {//i是子串的字符数,i在不断的减少,且子串的字符数>1
                //字符串子串从左边开始向右移动
                for (int start = 0, end = i/*i是子串长度*/; end <= len; start++,end++) {
                    substring = minStr.substring(start, end);
                    if (maxStr.indexOf(substring) > 0) {
                        list.add(substring);
                    }
                }
                if(list.size()>0){
                    return list;
                }
            }
    
            return null;
        }
  • 相关阅读:
    进程 线程 协程之间的区别与联系
    http协议基础 5.关于http请求响应报文的总结
    http协议基础 4. http请求报文格式
    http协议基础 3.URI URL 与URN之间的联系与区别。
    python面试题----持续更新中
    python之禅
    Django 2.0 报错解决方案----持续更新中
    4
    3
    2
  • 原文地址:https://www.cnblogs.com/zhyn-BeHard/p/6528318.html
Copyright © 2011-2022 走看看