zoukankan      html  css  js  c++  java
  • 【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;  
        }
    }
  • 相关阅读:
    消息中间件选型
    Spring MVC中基于注解的 Controller
    Servlet线程安全问题
    ps -C
    getconf LONG_BIT 得到系统的位数
    安装memcached服务器和PHP中添加memcache拓展模块
    mysql 源码包 有的版本 可能没有 CMakeCache.txt
    mysql php nginx 源码包下载地址
    使yum保留下载的rpm包
    制做RPM包
  • 原文地址:https://www.cnblogs.com/ningvsban/p/3967231.html
Copyright © 2011-2022 走看看