zoukankan      html  css  js  c++  java
  • 【算法】java语言求不定长字符串的最长子串和长度

    public class interview6 {
        /**
         * 用java写一个最长子串,有一个字符串,不定长,比如abcdbafedcabcmonabcd,
         * 写一个方法要找出给定字符串的最长子串,最长子串是连续的不重复的字符串,返回长度(7)
         */
        @Test
        public void test(){
            String str="abcdbafedcabcmonabcd";
            int left=0;
            int maxlength=0;
            Map<String,Integer> substrs=new HashMap<>();
            StringBuilder sb=new StringBuilder();
    
            Map<Character,Integer> map=new HashMap<>();
            for(int right=0;right<str.length();right++){
                char x=str.charAt(right);
                if(map.containsKey(x)){
                    left=Math.max(left,map.get(x)+1);
                    String s = sb.toString();
                    substrs.put(s,maxlength);
                    sb=new StringBuilder(s.substring(s.indexOf(x)+1));
                }
                map.put(x,right);
                sb.append(x);
                maxlength=Math.max(maxlength,right+1-left);
            }
            substrs.put(sb.toString(),maxlength);
    
            System.out.println("最大不重复子串长度为:"+maxlength);
            Set<String> keySet = substrs.keySet();
            Iterator iterator=keySet.iterator();
            while (iterator.hasNext()){
                Object key = iterator.next();
                int value=substrs.get(key);
                System.out.println(key+"--->"+value);
            }
        }
    }
    //结果:
    //        最大不重复子串长度为:7
    //        cdb--->4
    //        cdbafe--->6
    //        monabcd--->7
    //        fedcab--->6
    //        abcmon--->6
    //        bafed--->6
    //        bcmona--->6
    //        cmonab--->6
    //        monabc--->6
    //        bafedc--->6
    //        abcd--->4
    //        fedca--->6
    每天进步一点点,快乐生活多一点。
  • 相关阅读:
    Build MySQL 5.7.4 in RedHat
    glibc-2.19 之 strlen 实现
    [部署问题列表]
    [数据链路排查]
    VS配置本地IIS以域名访问
    SQL系列函数——数学函数
    面向对象编程的几个原则
    SQL系列函数——字符串函数
    SQL数据类型
    DHtmlx组件获取选中行的某一列对应的值
  • 原文地址:https://www.cnblogs.com/yiruliu/p/14368686.html
Copyright © 2011-2022 走看看