zoukankan      html  css  js  c++  java
  • java_基础知识_字符串练习题_计算两个字符串的最长公共字串长度

    package tek;

      Java算法——求出两个字符串的最长公共字符串

    /**   
     * @Title: 问题:有两个字符串str1和str2,求出两个字符串中最长公共字符串。
     * @author 匹夫(在YW的数据基础上再次延伸)  
     * @date 2017年4月19日 下午8:08:37 
     */
    public class Demo1 {
        
        /*
        //减0 个字符  内循环1次
        k2.substring(0, 7);//外循环第1次_内循环第1次
        //减一个字符  内循环2次
        k2.substring(0, 6);//外循环第2次_内循环第1次
        k2.substring(1, 7);//外循环第2次_内循环第2次
        //减两个字符 内循环3次
        k2.substring(0, 5);// 外循环第3次_内循环第1次
        k2.substring(1, 6);// 外循环第3次_内循环第2次
        k2.substring(2, 7);// 外循环第3次_内循环第2次
        //减3个字符  内循环4次
        k2.substring(0, 4);// 外循环第4次_内循环第1次
        k2.substring(1, 5);// 外循环第4次_内循环第2次
        k2.substring(2, 6);// 外循环第4次_内循环第3次    
        k2.substring(3, 7);// 外循环第4次_内循环第4次
    */    
        public static void main(String [] args){
            String k1 = "10101121018";
            String k2 = "101210182";
            String max = null;
            String max_str = null;
            String min_str = null;
            if(k1.length()==k2.length()){
                max_str = k1;
                min_str = k2;
            }else if(k1.length()>k2.length()){
                max_str = k1;
                min_str = k2;
            }else{
                max_str = k2;
                min_str = k1;
            }
            int index = 0;
            for(int x=min_str.length();x>=0;x--){
                int b = x;
                boolean flag = false;
                for(int y=0;y<=min_str.length()-x;y++){
                    index++;
                    int v = y;
                    String wait_max = min_str.substring(v, b);
                    if(max_str.contains(wait_max)){
                        max = wait_max;
                        flag = true;
                        break;
                    }
                    b++;
                }
                if(flag){
                    break;
                }
            }
            System.out.println(index);
            System.out.println(max);
        }
    
    }
    String ms = "01012101121301";
    String ds = "0121121301";
    
    0121121301
    
    ms.contain(ds.substring(x,y));
    x
    思路2
    10个字符1次
    1    0121121301    10    ms.contain(ds.substring(0,10));
    
    9个字符串2次
    2    012112130    9    ms.contain(ds.substring(0,9));
    3     121121301    9    ms.contain(ds.substring(1,10));
    
    8个字符3次
    4       01211213    8    ms.contain(ds.substring(0,8));
    5        12112130    8    ms.contain(ds.substring(1,9));
    6       21121301    8    ms.contain(ds.substring(2,10));
    
    7个字符4次
    7    0121121        7    ms.contain(ds.substring(0,7));
    8     1211213    7    ms.contain(ds.substring(1,8));
    9      2112130    7    ms.contain(ds.substring(2,9));
    10       1121301    7    ms.contain(ds.substring(3,10));
    
    
    思路1
    String temp_max = 0121,
    
    int x = 0;
    int y= 10;
    ms.contain(ds.substring(x,y));
    
    1    0121121301    ms.contain(ds.substring(0,10));
    2    012112130     ms.contain(ds.substring(0,9));
    3    01211213      ms.contain(ds.substring(0,8));
    4    0121121       ms.contain(ds.substring(0,7));
    5    012112        ms.contain(ds.substring(0,6));
    6    01211         ms.contain(ds.substring(0,5));
    7    0121          ms.contain(ds.substring(0,4));
    
    8    121121301     ms.contain(ds.substring(1,10));
    9    12112130      ms.contain(ds.substring(1,9));
    10    1211213      ms.contain(ds.substring(1,8));
    11    121121       ms.contain(ds.substring(1,7));
    12    12112        ms.contain(ds.substring(1,6));
    13    1211         ms.contain(ds.substring(1,5));
    14    121          ms.contain(ds.substring(1,4));
    
    15    21121301    ms.contain(ds.substring(2,10));
    16    2112130     ms.contain(ds.substring(2,9));
    17    211213      ms.contain(ds.substring(2,8));
    18    21121       ms.contain(ds.substring(2,7));
    
    19    1121301        ms.contain(ds.substring(3,10));
        
    
    
    
     
  • 相关阅读:
    [UWP] 为WinRT组件创建Nuget包
    再见北京,深圳你好
    [UWP] 用 AudioGraph 来增强 UWP 的音频处理能力——AudioFrameInputNode
    [UWP] 用 AudioGraph 来增强 UWP 的音频处理能力
    UWP 多语言的三个概念
    利用 Win32 启动和检测 UWP App 的方法
    反向代理教务系统
    [UWP] Custom Capability的使用
    [UWP]针对UWP程序多语言支持的总结,含RTL
    Xamarin自定义布局系列——支持无限滚动的自动轮播视图CarouselView
  • 原文地址:https://www.cnblogs.com/ak23173969/p/6735829.html
Copyright © 2011-2022 走看看