java實(shí)現(xiàn)求兩個(gè)字符串最長(zhǎng)公共子串的方法
本文實(shí)例講述了java實(shí)現(xiàn)求兩個(gè)字符串最長(zhǎng)公共子串的方法。分享給大家供大家參考,具體如下:
這個(gè)是華為OJ上的一道題目。首先,如果我們用java寫(xiě)代碼,華為OJ有以下三條規(guī)則需遵守,否則編譯無(wú)法通過(guò)或者用例無(wú)法通過(guò),規(guī)則如下:
(1)一定不可以有包名;
(2)主類(lèi)名只能為Main;
(3)不可以輸出與結(jié)果無(wú)關(guān)的信息。
好了,按照以上規(guī)則,我們寫(xiě)出來(lái)的代碼如下(此代碼不是最優(yōu)的,只是用來(lái)記錄華為OJ上java代碼的書(shū)寫(xiě)規(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)度開(kāi)始 for (int i = min.length(); i >= 1; i--) { //遍歷長(zhǎng)度為i的min子串,從0開(kāi)始 for (int j = 0; j <= min.length() - i; j++) { target = min.substring(j, j + i); //遍歷長(zhǎng)度為i的max子串,判斷是否與target子串相同,從0開(kāi)始 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ī)劃之編輯距離問(wèn)題示例代碼
- Java動(dòng)態(tài)規(guī)劃之硬幣找零問(wèn)題實(shí)現(xiàn)代碼
- Java矩陣連乘問(wèn)題(動(dòng)態(tài)規(guī)劃)算法實(shí)例分析
- Java算法之最長(zhǎng)公共子序列問(wèn)題(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)文章
Java數(shù)據(jù)封裝樹(shù)形結(jié)構(gòu)代碼實(shí)例
這篇文章主要介紹了Java數(shù)據(jù)封裝樹(shù)形結(jié)構(gòu)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01java實(shí)現(xiàn)雙色球抽獎(jiǎng)算法
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)雙色球抽獎(jiǎng)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05深入探究Java?@MapperScan實(shí)現(xiàn)原理
之前是直接在Mapper類(lèi)上面添加注解@Mapper,這種方式要求每一個(gè)mapper類(lèi)都需要添加此注解,麻煩。通過(guò)使用@MapperScan可以指定要掃描的Mapper類(lèi)的包的路徑,這篇文章深入探究Java?@MapperScan的實(shí)現(xiàn)原理2023-01-01快速學(xué)會(huì)Dubbo的配置環(huán)境及相關(guān)配置
本文主要講解Dubbo的環(huán)境與配置,文中運(yùn)用大量代碼和圖片講解的非常詳細(xì),需要學(xué)習(xí)或用到相關(guān)知識(shí)的小伙伴可以參考這篇文章2021-09-09Java Swing組件編程之JTable表格用法實(shí)例詳解
這篇文章主要介紹了Java Swing組件編程之JTable表格用法,結(jié)合實(shí)例形式詳細(xì)分析了Swing組件中JTable表格的常見(jiàn)定義與使用方法,需要的朋友可以參考下2017-11-11SpringBoot超詳細(xì)講解@Enable*注解和@Import
這篇文章主要介紹了SpringBoot?@Enable*注解和@Import,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07SpringBoot2之PUT請(qǐng)求接收不了參數(shù)的解決方案
這篇文章主要介紹了SpringBoot2之PUT請(qǐng)求接收不了參數(shù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07一招教你使用Java執(zhí)行g(shù)roovy腳本的兩種方式
本文主要介紹了一招教你使用Java執(zhí)行g(shù)roovy腳本的兩種方式,一種是通過(guò)腳本引擎ScriptEngine提供的eval(String)方法執(zhí)行腳本內(nèi)容,一種是執(zhí)行g(shù)roovy腳本,感興趣的可以了解一下2023-09-09