zoukankan      html  css  js  c++  java
  • 比较两个字符串,取其中最大的重复字符串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;
        }
  • 相关阅读:
    mysql 存储引擎
    mysql优化的理解(转载)
    转载:字节流与字符流的理解
    转载:java面试题(二)
    androidstudio与unity进行交互
    偶尔出现button不能点击的情况
    R文件报错:cannot resolve symbol ‘R’
    有时候老师报空错误,但是输出和在面板上看是得到了实例的
    边缘与多边形碰撞盒不能编辑的原因
    编程内功修炼
  • 原文地址:https://www.cnblogs.com/ysloong/p/6381640.html
Copyright © 2011-2022 走看看