力扣17題 電話號碼的字母組合

2021-10-01 19:19:31 字數 2335 閱讀 5494

給定乙個僅包含數字 2-9 的字串,返回所有它能表示的字母組合。

給出數字到字母的對映如下(與**按鍵相同)。注意 1 不對應任何字母。

示例:

輸入:"23"

輸出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

說明:

儘管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。

因為給出的號碼字串長度不定, 用常規的迴圈巢狀難以實現. 本題可以使用遞迴解決, 本文依舊使用迴圈法.(如輸入數字為 「233」)

第一步先處理號碼只有一位的情況的答案

[「a」,「b」,「c」]

當進行第 i 步時, 會有前 i 步 已經找好的組合, 用這些已經找好的組合再與新的號碼組

([「a」,「b」,「c」]與[「d」,「e」,「f」]組合結果為[「ad」, 「ae」, 「af」, 「bd」, 「be」, 「bf」, 「cd」, 「ce」, 「cf」].)

如果還有還有第三位以及更多位的數字, 反覆執行第二步直到數字用完.

(此時找[「ad」, 「ae」, 「af」, 「bd」, 「be」, 「bf」, 「cd」, 「ce」, 「cf」] 與 [「d」,「e」,「f」] 的組合)

/*

*給定乙個僅包含數字 2-9 的字串,返回所有它能表示的字母組合。

*給出數字到字母的對映如下(與**按鍵相同)。注意 1 不對應任何字母。

**示例:

**輸入:"23"

*輸出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

*/#include

#include

#include

#include

#include

using

namespace std;

ostream&

operator

<<

(ostream& os, vector

& v)

os <<

'"'<<

*(v.

end()-

1)<<

'"'<<

']';

return os;

}class

solution,,

,,,,

,,};

// 當輸入數字只有一位的處理

vector ans =

;for

(int i =

0; i < tellphone[digits[0]

].size()

; i++

)// 當大於等於兩位數字的處理

for(

int i =

1; i < digits.

size()

; i++);

// 初始化新的 結果

// 把前n步找到所有組合 與 下一組號碼組進行組合

for(

int j =

0; j < tellphone[digits[i]].

size()

; j++

)}

ans = new_ans;

// 新的組合賦值舊組合

}return ans;}}

;int

main()

; solution solv;

auto ans = solv.

lettercombinations

(digits)

;sort

(ans.

begin()

, ans.

end())

; cout << ans << endl;

return0;

}

class

solution

;private list

answer =

newarraylist

<

>()

;public list

lettercombinations

(string digits)

// 遞迴

// digits 代表還沒有用到的**數字, temp是已經嘗試過來的字串

public

void

recuir

(string digits, string temp)}}

}

力扣 17 電話號碼的字母組合

c 刷題學習筆記目錄 c 百萬併發網路通訊 筆記目錄 回溯三步法 字串到字母的對映 同樣是使用 演算法套路 回溯篇 回溯三步法 中提到的回溯三步法 但是剛開始使用了unordered map來進行數字 字母的對映,所以略顯麻煩,看到 隨想錄 大佬的題解回溯演算法 號碼的字母組合,原來可以使用stri...

力扣17 電話號碼的字母組合

原題 解法1 2都是大佬寫的,題解鏈結 1 回溯 1 class solution 2def lettercombinations self,digits str list str 3if not digits return 45 phone 1314 defbacktrack conbinatio...

17題電話號碼的字母組合

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