1. 程式人生 > >[OJ-java] 查詢兩個字串a,b中的最長公共子串

[OJ-java] 查詢兩個字串a,b中的最長公共子串

目的

記錄自己做過的有價值的程式碼

題目

如題,即查詢兩個字串stringA和stringB中的最長公共子串。成功返回最大公共子串,不成功返回null。

程式碼

    public static String iQueryMaxCommString(String stringA, String stringB) {
        if(stringA==null || stringB==null){
            return null;
        }
        if(stringA.length()<1 || stringB.length()<1){
return ""; } if (stringA.contains(stringB)) { return stringB; } else if (stringB.length() == 1) { return ""; } String leftSerach = iQueryMaxCommString(stringA, stringB.substring(0, stringB.length() - 1)); String rightSerach =
iQueryMaxCommString(stringA, stringB.substring(1, stringB.length())); return leftSerach.length() >= rightSerach.length() ? leftSerach : rightSerach; }

重點

理解本題中最後三行裡遞迴的精髓。

相關推薦

[OJ-java] 查詢字串a,b公共

目的 記錄自己做過的有價值的程式碼 題目 如題,即查詢兩個字串stringA和stringB中的最長公共子串。成功返回最大公共子串,不成功返回null。 程式碼 public static String iQueryMaxCommString(Str

查詢字串a,b公共

#include<iostream> #include<string> using namespace std; string iQueryMaxCommString(string s1, string s2); int main(){ s

Java例題】5.5 字符公共

length nbsp char static 字符 chapter max system.in 子串 5. 查找兩個字符串中含有的最長字符數的公共子串。 package chapter5; import java.util.Scanner; public

字串A,B,在A刪除B的元素

//we are students --- aeiou === w r stdnts char* DeleteTwoInOne(char first[],char second[]) { if (first == NULL || second == NULL) re

字串A,B,求BA首次出現的位置,如果B不在A返回-1.

package paixu; import java.util.*; /** * Created by Administrator on 2017/9/17. */ public class PIpei { public static void main(Str

給出字串A B,求AB公共序列(序列不要求是連續的)。 比如為: abcicba abdkscab ab是序列,abc也是,abca也是,其中abca是這字元

思路:該題求連個子串的公共長度,不要求子串一定連續。子串長度有兩種情況,第一種,其中任意一個子串的長度為0,那公共長度就一定為0   第二種,就是子串長度不為0,在子串長度不為0 的情況下又有2種情況,子串長度相等,子串長度不相等。   可用窮舉法求解或動態規劃法求解。 設

給定二叉搜尋樹和整數A,B小整數和大整數)。如何刪除不在該區間內的元素(剪枝)

由於需要檢查樹中的每一個元素,結點的處理順序可以是從葉子結點到根結點。這樣當處理到結點本身時,其左子樹和右字樹為有效剪枝的BST。 static BianrySearchTreeNode PruneB

給出字串,找到公共,並返回其長度,java實現

給出兩個字串,找到最長公共子串,並返回其長度。 您在真實的面試中是否遇到過這個題? Yes 樣例 給出A=“ABCD”,B=“CBCE”,返回 2 注意 子串的字元應該連續的出現在原字串中,這

字符公共——Java實現

求解 ont ins oid info ++ 題意 短字符串 clas 要求:求兩個字符串的最長公共子串,如“abcdefg”和“adefgwgeweg”的最長公共子串為“defg”(子串必須是連續的) public class Main03{ // 求解兩個字符號的最

公共字串公共(C++)

思路: 1.按兩字串長度,兩層迴圈 2.每一次迴圈找出潛在的公共字串 (比較笨的方法,但比較好用,也很清楚,程式碼如下) #include<iostream> #include<stdio.h> #include<algorithm>

《程式設計師程式碼面試指南》求字串公共

/** * 題目: * 給定兩個字串 str1 和 str2,返回兩個字串的最長公共子串。 *舉例: * str1 = "1AB2345CD",str2 = "12345EF",返回"2345"。 */ /** * 解答: * 經典動態規劃的方法可以做到時間複

python實現:求字串公共

假設s1 = 'abcdef'  ,s2 = 'mcdea',建立一個(len(s1)+1) x (len(s2)+1)的陣列,如下如所示的一個二維陣列,程式碼的操作流程是: # -*- coding

用字尾陣列求字串公共

對於兩個字串,不好直接運用字尾陣列,所以我們可以把兩個子串串中間用一個在字串中不會出現的字元連線起 來,比如'$‘,計算字尾陣列,檢查字尾陣列中所有相鄰字尾。分屬於兩個字串的字尾的lcp的最大值就是答案。 因為字串的任何一個子串都是這個字串某個字尾的字首。求A和B 的最長公

利用KMP演算法,求順序表儲存的字串公共

/*程式說明: * 程式是由順序表實現,功能為查詢兩字串中的最長公共子串; * 兩條字串分別由兩個順序表儲存; * 查詢思路是分解出短的那條字串的全部連續子串(例如abc分解為abc,ab,a,bc,b,c), * 再使用kmp演算法將該全部子串與長的那條字串進行匹配,找

SPOJ 1811. Longest Common Substring (LCS,字串公共, 字尾自動機SAM)

/* *********************************************** Author :kuangbin Created Time :2013-9-8 23:27:46 File Name :F:\2013ACM練習\專

字串公共(動態規劃)

code如下: //Longest common sequence, dynamic programming method void FindLCS(char *str1, char *str2) { if(str1 == NULL || str2 == NULL)

LCS字串公共

LCS問題就是求兩個字串最長公共子串的問題。解法就是用一個矩陣來記錄兩個字串中所有位置的兩個字元之間的匹配情況,若是匹配則為1,否則為0。然後求出對角線最長的1序列,其對應的位置就是最長匹配子串的位置。 下面是字串21232523311324和字串31212322344

組字符公共(可包含多長度相同的公共

String#include <stdio.h>#include <string.h>main(){int i,j,k,n,h,m=0,count=0,count1=0,count2=0,count3=0;char str1[100], str2[100];int str3[100];

Blue Jeans POJ - 3080 (多字串公共)

題意:       給定n個字串,要你求出這n個字串的最長公共子串,如果存在多個輸出字典序最小的那個. 分析:        KMP+暴力去列舉即可. #include<stdio.h> #incl

[Python]獲取2字串公共

原創文章,歡迎轉載。轉載請註明:轉載自 祥的部落格 原文連結:https://blog.csdn.net/humanking7/article/details/84645055 文章目錄 @[toc]