筆者以c++
方式解決。
#include
"iostream"
using namespace std;
#include
"algorithm"
#include
"vector"
#include
"queue"
#include
"set"
#include
"map"
#include
"string"
#include
"stack"
class solution
;// 結果陣列
vector result;
public:
vector
lettercombinations
(string digits)
// 當前正在處理的字串
string temp;
// 深搜,從 0 開始
dfs(digits, temp,0)
;return result;
}/**
* 深搜所有的組合
* @param digits 字串
* @param temp 當前正在處理的字串
* @param index 當前處理的下標
*/void
dfs(string digits, string &temp,
int index)
// 達到符合要求的邊界,儲存值到結果陣列,並返回
if(temp.
length()
== digits.
length()
)// 獲取字串中 index 處的數字
int number_data = digits[index]
-'0'
;// 獲取其代表的字串的索引
number_data -=2
;// 獲取代表的字串
string basicstring = datachen[number_data]
;// 遍歷整個代表的字串,分為取和不取兩種狀態
for(
int i =
0; i < basicstring.
length()
;++i)}}
;int
main()
system
("pause");
return0;
}
執行結果
有點菜,有時間再優化一下。
難得有時間刷一波leetcode
, 這次做乙個系統的記錄,等以後複習的時候可以有章可循,同時也期待各位讀者給出的建議。演算法真的是乙個照妖鏡,原來感覺自己也還行吧,但是演算法分分鐘教你做人。前人栽樹,後人乘涼。在學習演算法的過程中,看了前輩的成果,受益匪淺。
感謝各位前輩的辛勤付出,讓我們少走了很多的彎路!
Leetcode17 電話號碼組合
leetcode17 號碼組合 給定乙個僅包含數字 2 9 的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 思路 大家都能想到,我每次從裡面選擇乙個數,然後把所有的可能...
leetcode 17 電話號碼的字母組合
題目描述 給定乙個僅包含數字2 9的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 實現 string num 10 class solution private tem...
LeetCode17電話號碼的字母組合
給定乙個僅包含數字2 9的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf class solution def lettercombinations self,digit...