zoukankan      html  css  js  c++  java
  • java中求几个字符串的最大公共子串 使用了比较器Comparator

    package com.swift;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    public class Max_Substring_Test {
    
        public static void main(String[] args) {
    
            /*
             * 几个字符串的最大公共子字符串
             */
    
            String str1 = "eriousdfndnfdlk";
            String str2 = "dkgfdkgkdjgdjgjksjgksgjsdkjsdierioe";
            String str3 = "ldskfjdskierundsnfjerioejrejrheruer3j43j4hj3";
            String sub;
            
            List<String> list=new ArrayList<String>();
    
            for (int i = 0; i < str1.length(); i++) {
                sub = str1.substring(0, i);
                
                if(str2.indexOf(sub)!=-1&&str3.indexOf(sub)!=-1) {
    //                System.out.println(sub);
                    list.add(sub);
                }
            }
            
            Collections.sort(list, new Comparator<String>() {
    
                @Override
                public int compare(String arg0, String arg1) {
                    int i=arg1.length()-arg0.length();
                    return i;
                }
                
            });
            
                System.out.println("The max subString is "+list.get(0));
        }
    
    }

     上面方法中测试的子串都是从第一个字母开始的,所以并不完全,子串还有很多,还有从第二个字母开始,从第三个字母开始,等等的子字符串

    所以,还应该再加一层循环,把substring(开始参数,结束参数)中开始和结束参数都设置为变量,开始参数从0开始到最后一个字母下标,结束参数起始位置要根据开始参数而定,否则会出现下标异常

    package com.swift;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    public class Max_Substring_Test {
    
        public static void main(String[] args) {
    
            /*
             * 几个字符串的最大公共子字符串
             */
    
            String str1 = "eriousdfndnfdlk";
            String str2 = "dkgfdkgkdjgdjgjksjgksgjsdkjsdierioe";
            String str3 = "ldskfjdskierundsnfjerioejrejrheruer3j43j4hj3";
            String sub;
    
            List<String> list = new ArrayList<String>();
    
            for (int i = 0; i < str1.length(); i++) {
                for (int j = i; j < str1.length(); j++) {
                    System.out.println(sub = str1.substring(i, j+1));
    
                    if (str2.contains(sub)&& str3.contains(sub)) {
                        System.out.println(sub);
                        list.add(sub);
                    }
                }
            }
    
            Collections.sort(list, new Comparator<String>() {
    
                @Override
                public int compare(String arg0, String arg1) {
                    int i = arg1.length() - arg0.length();
                    return i;
                }
    
            });
    
            System.out.println("The max subString is " + list.get(0));
        }
    
    }
  • 相关阅读:
    自己的理想,成长过程逐渐明确
    泯灭众人咱不怕。本身就是一个凡人。重要的是,做一个认真的平凡人。
    Access开端
    JsonHelper使用方式
    安装Office Visio 2007 中文版提示找不到安装源
    今天记
    BINGMAPS GPS经纬度格式转换。
    access 基础知识
    (井底之蛙)惭愧丢人的两段代码希望以后多多长进,警醒自己
    脱离SVN版本控制。DAT文件语句。
  • 原文地址:https://www.cnblogs.com/qingyundian/p/8289900.html
Copyright © 2011-2022 走看看