• 常见的子串问题


    在我们学习一门新的语言时,例如c或者java时,我们不太熟习怎么去进行数据在字符串层次上的比较,比如常见的问题有最大公共子串,我们可以尝试采用

    类似于一个二维数组的形式来进行字符串的比较,得出最大公共子串,那么这里就演示一下

    比如:"abcde"和"abc"这个字符串的比较,可能你会觉得这个子串很短,一眼就可以看出来,当然我这里只是演示直观

    如果你有更长的字符串不妨可以尝试一下。

    这里采用的是一个二维数组的形式比较是否相等 如果相等就让其中的值为1,那么如果连续相等怎么办,自然是斜对角+1=得到当前

    的相等数目 这样可以更好的进行比较 下面是代码

    import java.util.ArrayList;
    //重复的长度
    //重复的段落为
    public class Test2A {
        private static ArrayList<Character> array =new ArrayList<Character>();
        public static void main(String[] args) {
            String A="abcdefhijk";
            String B="abcd";
            fun(A,B);
        }
        private static void fun(String a, String b) {
            char[] arr1=a.toCharArray();
            char[] arr2=b.toCharArray();
            
            int[][] test=new int[arr1.length+1][arr2.length+1];
            int max=0;
            int maxi=0;
            for(int i=1;i<arr1.length+1;i++){
                for(int j=1;j<arr2.length+1;j++){
                    if(arr1[i-1]==arr2[j-1]){
                        test[i][j]=test[i-1][j-1]+1;
                    }
                    if(max<test[i][j]){
                        max=test[i][j];
                        maxi=i-1;
                    }
                }
            }
            for(int i=maxi-max+1,n=max;n>0&&i<arr1.length;n--,i++){
                array.add(arr1[i]);
            }
            System.out.println("长度为:"+max);
            System.out.println(array.toString());
        }
    
    }
    恐惧源于无知,代码改变世界
  • 相关阅读:
    JQuery_1
    CSS_1
    CSS_3
    CSS_4
    2020.10.19小记
    CSS_2
    IT茧
    亲爱的小C
    四五点钟的太阳
    有聊
  • 原文地址:https://www.cnblogs.com/ad-zhou/p/8661910.html
Copyright © 2020-2023  润新知