• 比较两个字符串,取其中最大的重复字符串006


    // 选出两个字符串中首个最大的重复字符串
        public String MaxRepeatStr(String str1,String str2){
            
            String longStr = "";
            String shortStr = "";
            if(str1.length() <= str2.length()){
                shortStr = str1;
                longStr = str2;
            } else{
                shortStr = str2;
                longStr = str1;
            }
            
            int i = shortStr.length();
            int j = 0;
            while(i>0){
                for(int k = 0;k<=j;k++){
                    if (longStr.indexOf(shortStr.substring(k, i+k)) >= 0){
                        System.out.println("Has max String is " + shortStr.substring(k, i+k));
                        return shortStr.substring(k, i+k);
                    }
                }
                
                i--;
                j++;
            }
            System.out.println("Didn't Has max String.");
            return "";
        }
    
    //优化版
    // 选出两个字符串中最大的重复字符串以及出现的次数
        public Map MaxAllRepeatStr(String str1,String str2){
            
            Map<String,Integer> map = new HashMap<>();
            
            String longStr = "";
            String shortStr = "";
            if(str1.length() <= str2.length()){
                shortStr = str1;
                longStr = str2;
            } else{
                shortStr = str2;
                longStr = str1;
            }
            
            int i = shortStr.length();
            int j = 0;
            boolean hasflag = false;
            while(i>0){
                for(int k = 0;k<=j;k++){
                    //在for循环里,i是不变的,是本次循环中取得字符串长度
                    // i+k == endIndex
                    if (longStr.indexOf(shortStr.substring(k, i+k)) >= 0){
                        if(map.get(shortStr.substring(k, i+k)) != null){
                            map.put(shortStr.substring(k, i+k), map.get(shortStr.substring(k, i+k)) + 1);
                        } else{
                            map.put(shortStr.substring(k, i+k), 1);
                        }
                        hasflag = true;
                    }
                }
                if(hasflag){
                    return map;
                }
                
                i--;
                j++;
            }
            System.out.println("Didn't Has max String.");
            return map;
        }
  • 相关阅读:
    Java性能总结一(转)
    Java性能总结三(转)
    Java性能总结二(转)
    Jsp设计第三版文摘
    java配置错误记录
    PatternsInJava文摘
    Java性能总结四(转)
    Spring+Struts+Hibernate 简介(转)
    baidu c++吧上的一道题
    IT公司笔试题总结(三)
  • 原文地址:https://www.cnblogs.com/ysloong/p/6381640.html
Copyright © 2020-2023  润新知