java實(shí)現(xiàn)求兩個(gè)字符串最長(zhǎng)公共子串的方法
本文實(shí)例講述了java實(shí)現(xiàn)求兩個(gè)字符串最長(zhǎng)公共子串的方法。分享給大家供大家參考,具體如下:
這個(gè)是華為OJ上的一道題目。首先,如果我們用java寫代碼,華為OJ有以下三條規(guī)則需遵守,否則編譯無法通過或者用例無法通過,規(guī)則如下:
(1)一定不可以有包名;
(2)主類名只能為Main;
(3)不可以輸出與結(jié)果無關(guān)的信息。
好了,按照以上規(guī)則,我們寫出來的代碼如下(此代碼不是最優(yōu)的,只是用來記錄華為OJ上java代碼的書寫規(guī)則):
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子串的長(zhǎng)度,從最大長(zhǎng)度開始
for (int i = min.length(); i >= 1; i--) {
//遍歷長(zhǎng)度為i的min子串,從0開始
for (int j = 0; j <= min.length() - i; j++) {
target = min.substring(j, j + i);
//遍歷長(zhǎng)度為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;
}
}
希望本文所述對(duì)大家Java程序設(shè)計(jì)有所幫助。
- Java動(dòng)態(tài)規(guī)劃之編輯距離問題示例代碼
- Java動(dòng)態(tài)規(guī)劃之硬幣找零問題實(shí)現(xiàn)代碼
- Java矩陣連乘問題(動(dòng)態(tài)規(guī)劃)算法實(shí)例分析
- Java算法之最長(zhǎng)公共子序列問題(LCS)實(shí)例分析
- Java最長(zhǎng)公共子序列示例源碼
- Java字符串中刪除指定子字符串的方法簡(jiǎn)介
- Java的字符串中對(duì)子字符串的查找方法總結(jié)
- java查找字符串中的包含子字符串的個(gè)數(shù)實(shí)現(xiàn)代碼
- java實(shí)現(xiàn)統(tǒng)計(jì)字符串中字符及子字符串個(gè)數(shù)的方法示例
- Java中獲取子字符串的幾種方法示例
- Java基于動(dòng)態(tài)規(guī)劃法實(shí)現(xiàn)求最長(zhǎng)公共子序列及最長(zhǎng)公共子字符串示例
相關(guān)文章
教你怎么在IDEA中創(chuàng)建java多模塊項(xiàng)目
這篇文章主要介紹了教你怎么在IDEA中創(chuàng)建java多模塊項(xiàng)目,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
spring boot啟動(dòng)時(shí)加載外部配置文件的方法
這篇文章主要給大家介紹了關(guān)于spring boot啟動(dòng)時(shí)加載外部配置文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02
JAVA設(shè)計(jì)模式之調(diào)停者模式詳解
這篇文章主要介紹了JAVA設(shè)計(jì)模式之調(diào)停者模式詳解,調(diào)停者模式是對(duì)象的行為模式,調(diào)停者模式包裝了一系列對(duì)象相互作用的方式,使得這些對(duì)象不必相互明顯引用,從而使它們可以較松散地耦合,需要的朋友可以參考下2015-04-04
SpringBoot如何實(shí)現(xiàn)各種參數(shù)校驗(yàn)
文章詳細(xì)介紹了SpringValidation的使用,包括簡(jiǎn)單使用、requestBody參數(shù)校驗(yàn)、requestParam/PathVariable參數(shù)校驗(yàn)、統(tǒng)一異常處理、分組校驗(yàn)、嵌套校驗(yàn)、集合校驗(yàn)、自定義校驗(yàn)、編程式校驗(yàn)、快速失敗、@Valid和@Validated的區(qū)別以及實(shí)現(xiàn)原理2024-12-12
Jdk1.8 HashMap實(shí)現(xiàn)原理詳細(xì)介紹
這篇文章主要介紹了Jdk1.8 HashMap實(shí)現(xiàn)原理詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-12-12
Java異或運(yùn)算應(yīng)用場(chǎng)景詳解
這篇文章主要給大家介紹了關(guān)于Java異或運(yùn)算應(yīng)用場(chǎng)景的相關(guān)資料,異或運(yùn)算會(huì)應(yīng)用在很多算法題中,這里整理了幾個(gè)最常見的應(yīng)用場(chǎng)景,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
Java使用ANTLR4對(duì)Lua腳本語法校驗(yàn)詳解
ANTLR是一個(gè)強(qiáng)大的解析器生成器,用于讀取、處理、執(zhí)行或翻譯結(jié)構(gòu)化文本或二進(jìn)制文件,下面就跟隨小編一起看看Java如何使用ANTLR4對(duì)Lua腳本語法校驗(yàn)吧2025-04-04
Spring?Cloud?Alibaba使用Nacos作為注冊(cè)中心和配置中心
這篇文章主要為大家介紹了Spring?Cloud?Alibaba使用Nacos作為注冊(cè)中心和配置中心的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Java中利用Alibaba開源技術(shù)EasyExcel來操作Excel表的示例代碼
這篇文章主要介紹了Java中利用Alibaba開源技術(shù)EasyExcel來操作Excel表的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03

