• 【java】求两个字符串的最长公共子串


      这个是华为OJ上的一道题目。首先,如果我们用java写代码,华为OJ有以下三条规则需遵守,否则编译无法通过或者用例无法通过,规则如下:

    (1)一定不可以有包名;
    (2)主类名只能为Main;
    (3)不可以输出与结果无关的信息。

      好了,按照以上规则,我们写出来的代码如下(此代码不是最优的,只是用来记录华为OJ上java代码的书写规则):

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            Main mainObj = new Main();
            int len = mainObj.getCommonStrLength(sc.next(),sc.next());
            System.out.println(len);
        }
        
        int getCommonStrLength(String str1, String str2) {
                 str1 = str1.toLowerCase();  
                str2 = str2.toLowerCase();  
                int len1 = str1.length();  
                int len2 = str2.length();  
                String min = null;  
                String max = null;  
                String target = null;
                min = len1 <= len2 ? str1 : str2;
                max = len1 >  len2 ? str1 : str2;
                //最外层:min子串的长度,从最大长度开始
                for (int i = min.length(); i >= 1; i--) {
                    //遍历长度为i的min子串,从0开始
                    for (int j = 0; j <= min.length() - i; j++) {  
                        target = min.substring(j, j + i);  
                        //遍历长度为i的max子串,判断是否与target子串相同,从0开始
                        for (int k = 0; k <= max.length() - i; k++) {  
                            if (max.substring(k,k + i).equals(target)) {  
                                return i;  
                            }
                        }
                    }
                }  
                return 0;  
        }
    }
  • 相关阅读:
    Redis 常用命令
    docker安装与配置nginx详细过程
    docker安装与配置redis详细过程
    kettle 查询 tinyint 值为 Y,kettle 查询 tinyint 为布尔值
    kettle 乱码问题处理方案
    Vue响应式原理
    ES6学习笔记1
    xlxs转成Unicode编码的json文件
    移动、PC图片拖拽缩放2
    util
  • 原文地址:https://www.cnblogs.com/ningvsban/p/3967231.html
Copyright © 2020-2023  润新知