我的程序打印有雙字母 例如 在一個字一個字的所有排列「Helloo」Calulating我的程序的大O的複雜性
其結果將是: [heloo,直升機,你好,helloo]
private List<String> doubleLetterPermute(String start, String ending, List<String> possibleWords) {
String prev = "";
for (int i = 0; i < ending.length(); i++) {
String letter = String.valueOf(ending.charAt(i));
// its a double letter
if (letter.equals(prev)) {
doubleLetterPermute(start + ending.substring(0, i), ending.substring(i + 1), possibleWords);
doubleLetterPermute(start + ending.substring(0, i + 1), ending.substring(i + 1), possibleWords);
}
prev = letter;
}
possibleWords.add(start + ending);
return possibleWords;
}
我不知道如何計算的複雜性,當遞歸函數進來, 它循環n次,其中n是一個字的字符數,爲O(n),但我在每一次出現雙字母的時候都會分裂這個詞,那麼這個詞怎麼會在大的範圍內顯示O符號?
用於置換的Big-O通常是O(n!),請參見[本頁](http://www.daveperrett.com/articles/2010/12/07/comp-sci-101-big-o-符號/)作爲參考 – 2013-04-22 20:27:55