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...