[LeetCode] Letter Combinations of a Phone Number
阿新 • • 發佈:2018-12-14
其實我一開始讀不懂題目。。我以為應該是出來的答案應該都是兩位的,我還特地拷貝AC程式碼執行一下才知道題目意思= =雖然看了懂了題意還是不會做 程式碼挺容易懂的,運用遞迴,以level為digits的遍歷指標,在遍歷每個指標對應的text組成out,總的來說是DFS的運用
class Solution {
public:
vector<string> letterCombinations(string digits) {
string text[] = { "abc","def","ghi","jkl","mno","pqrs","tuv","wxyz" };
vector< string>ans;
if (digits.empty())return ans;
string out = "";
letterConmbinationsDFS(digits, text, 0, out, ans);
return ans;
}
void letterConmbinationsDFS(string digits, string text[], int level, string out,
vector<string>& ans) {
if (level == digits.size())ans.push_back(out) ;
else {
string str = text[digits[level] - '2'];
for (int i = 0; i < str.size(); ++i) {
out.push_back(str[i]);
letterConmbinationsDFS(digits, text, level + 1, out, ans);
out.pop_back();
}
}
}
};