zoukankan      html  css  js  c++  java
  • 常见的子串问题

    在我们学习一门新的语言时,例如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());
        }
    
    }
    恐惧源于无知,代码改变世界
  • 相关阅读:
    JavaScript入门基础(三)
    JavaScript入门基础(二)
    Web页面该如何布局
    如何通过SQL创建删除表的索引,UNIQUE KEY
    vim使用大全
    安装vmwaretools后 真机和虚拟机仍不能复制黏贴
    php通用函数html时间文件大小生成随机数
    Centos下安装配置phpmyadmin
    [Leetcode 43] 11 Container With Most Water
    [Leetcode 39] 129 Sum Root to Leaf Numbers
  • 原文地址:https://www.cnblogs.com/ad-zhou/p/8661910.html
Copyright © 2011-2022 走看看