我碰到這是這樣的話突破問題就來了:字休息的時間複雜度
給定的輸入字符串和單詞的字典,段輸入 串入字典單詞空格分隔的序列如果 可能。
例如,如果輸入字符串爲「applepie」和字典有一組標準的英語單詞,那麼我們將返回字符串「蘋果派」作爲輸出
現在我自己想出了一個二次時間解決方案。我碰到各種各樣的other quadratic time solutions using DP。
但是在Quora的用戶發佈一個linear time solution to this problem
我無法弄清楚它是如何出來是線性的。他們在時間複雜性計算中有一些錯誤嗎?什麼是最好的最壞情況時間複雜度這個問題。我張貼在這裏最常見的DP解決方案
String SegmentString(String input, Set<String> dict) {
int len = input.length();
for (int i = 1; i < len; i++) {
String prefix = input.substring(0, i);
if (dict.contains(prefix)) {
String suffix = input.substring(i, len);
if (dict.contains(suffix)) {
return prefix + " " + suffix;
}
}
}
return null;
}
應該如何解決歧義? 'expertsexchange => [expert,sex,change],[experts,exchange]' – mishadoff
線性時間解決方案僅適用於兩個單詞的情況。你對此有什麼要求?最簡單的通用解決方案涉及生成2^n個項目的冪集,DP可以使其更快至O(n^2)。 –
顯然另一個線性定時算法可以在這個鏈接上找到http://stackoverflow.com/questions/8793387/how-to-break-down-a-given-text-into-words-from-the-dictionary?rq= 1看第二個答案 –