返回一組字串的最長公共字首,如 「abc」, 「abcdef」, 「abcd」, 則返回」abc」。
首先最長公共字首肯定小於或者等於最短字串,設第乙個字串為公共字串,公共字串長度為第乙個字串的長度,遍歷其他公共字串,如果其他公共字串比第乙個字串短,則公共字串取較短的長度,如果其他字串的字元不等於第乙個字串的字元,則退出比較,從而得當當前結果的公共字串,以此類推,直至遍歷除第乙個字串的其他字串。
string getcommonprefix(vector
& strs)
//設第乙個字串就是公共字串
commonstr = strs[0];
commonstrlen = commonstr.length();
for (int i = 1; i < strs.size(); i++)
for(int j = 0; j < commonstrlen; j++)
}commonstr = strs[i].substr(0,commonstrlen);
}return commonstr;
}
int _tmain(int argc, _tchar* argv)
string commonstr = getcommonprefix(strs);
cout
<<"common prefix string is "
0;}
最長公共字串
include include include include include customer.h using namespace std 最長公共字串 動態規劃 假設需要求得字串為str1,str2。函式f m,n 分別為 str1 m str2 n 結尾的公共字串長度。有以下遞推公式 遞推邊界...
最長公共字串
牛客網的題目鏈結 對於兩個字串,請設計乙個時間複雜度為o m n 的演算法 這裡的m和n為兩串的長度 求出兩串的最長公共子串的長度。這裡的最長公共子串的定義為兩個序列u1,u2,un和v1,v2,vn,其中ui 1 ui 1,vi 1 vi 1,同時ui vi。給定兩個字串a和b,同時給定兩串的長度...
最長公共字串和最長公共子串行
給出兩個字串,找到最長公共子串,並返回其長度。建立乙個矩陣來儲存兩個字串出現相同字元的地方,比如 abccd 和 abcefc 就有 abccd a10000 b02000 c00300 e00040 f00000 c00100 這樣就有每次遇到相等的都加上下他的斜上方的位置的值,然後使用乙個max...