最長公共子串行與子串問題

2021-08-24 20:53:23 字數 845 閱讀 5811

1. 最長公共子串行問題

題目:給定兩個字串str1和str2,返回兩個字串的最長公共子串行。

舉例:str1="1a2c3d4b56",str2="b1d23ca45b6a"。

"123456"和"12c4b6"都是最長公共子串行,返回哪乙個都行。

解法

vector>getdp(vectorstr1, vectorstr2)

for (int j = 1; j < m; j++)

for (int i = 1; i < m; i++)

} return dp;

}void lcse(string str1, string str2)

} for (auto c : res)

cout << c;

cout << endl;

}

2. 最長公共子串問題

題目:給定兩個字串str1和str2,返回兩個字串的最長公共子串。

舉例:str1="1ab2345cd",str2="12345ef",返回"2345"

解法

vector>getdp(vectorstr1, vectorstr2)

for (int j = 1; j < n; j++)

for (int i = 1; i < m; i++)

} return dp;

}void lcse(string str1, string str2)

} }cout << str1.substr(end-max+1,max) << endl;

}

最長公共子串行 與 最長公共子串

最長公共子串行 常用於解決字串的相似度,是指在母串中都出現過並且出現順序與母串保持一致的子串,不要求連續性。最長公共子串 是指在母串中連續出現的子串。例如 cnblogs belong 最長公共子串行為blog,最長公共子串為lo假設z z2,zk 是母串 x 與 y的最長公共子串行lcs,那麼 用...

最長公共子串與最長公共子串行

一 最長公共子串 longest common substring 遍歷的時候用乙個二維陣列儲存相應位置的資訊,如果兩個子串1與子串2相應位置相等 則看各自前乙個位置是否相等,相等則該位置值b i j b i 1 j 1 1,不相等則置為1。如果兩個子串1與子串2相應位置不相等,則b i j 0。如...

最長公共子串行 最長公共子串

1 最長公共子串行 採用動態規劃的思想,用乙個陣列dp i j 記錄a字串中i 1位置到b字串中j 1位置的最長公共子串行,若a i 1 b j 1 那麼dp i j dp i 1 j 1 1,若不相同,那麼dp i j 就是dp i 1 j 和dp i j 1 中的較大者。class lcs el...