使用回溯演算法計算電話號碼的字母組合

2021-10-07 09:21:54 字數 1231 閱讀 7664

回溯演算法

需要解決三個問題:

路徑:也就是已經做出的選擇。

選擇列表:也就是你當前可以做的選擇。

結束條件:也就是到達決策樹底層,無法再做選擇的條件。

其中最關鍵的點就是:在遞迴之前做選擇,在遞迴之後撤銷選擇

class solution 

// for(選擇:選擇列表)

// }

public listlettercombinations(string digits)

listvisited = new linkedlist<>();

lettermap.put('2',"abc");

lettermap.put('3',"def");

lettermap.put('4',"ghi");

lettermap.put('5',"jkl");

lettermap.put('6',"mno");

lettermap.put('7',"pqrs");

lettermap.put('8',"tuv");

lettermap.put('9',"wxyz");

int index = 0;//數字字串的第0個位置

backtrack(visited, digits, index);

return result;

}//路徑,選擇列表

private void backtrack(listvisited, string digits, int index)

// for(選擇:選擇列表)

// 觸發結束條件(已經訪問過了最後乙個數字)

if (index == digits.length())

result.add(str);

return;

}// int index = 0;//設定區域性變數在遞迴過程中沒有作用

char currnum = digits.charat(index);

string currletters = lettermap.get(currnum);

for (int i = 0; i < currletters.length(); i++)

}}

回溯 leetcode 電話號碼的字母組合

給定乙個僅包含數字 2 9 的字串,返回所有它能表示的字母組合。答案可以按 任意順序 返回。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。輸入 digits 23 輸出 ad ae af bd be bf cd ce cf 17.號碼的字母組合 定義乙個path記錄每次迴圈放入的...

5 電話號碼的字母組合(中等 回溯)

給定乙個僅包含數字 2 9 的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 說明 儘管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。回溯法class s...

電話號碼的字母組合

給乙個數字字串,每個數字代表乙個字母,請返回其所有可能的字母組合。下圖的手機按鍵圖,就表示了每個數字可以代表的字母。樣例給定 23 返回 ad ae af bd be bf cd ce cf 注意以上的答案是按照詞典編撰順序進行輸出的,不過,在做本題時,你也可以任意選擇你喜歡的輸出順序。class ...