1. 程式人生 > >【LeetCode】17. 電話號碼的字母組合

【LeetCode】17. 電話號碼的字母組合

題目描述

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

給出數字到字母的對映如下(與電話按鍵相同)。注意 1 不對應任何字母。
在這裡插入圖片描述

示例

輸入:“23”
輸出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].

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

解決方法

迭代,排列組合的問題。思路:遍歷輸入的字串digits,取出對應的字母串,存入向量中,後存入的與前面的進行組合
如,對於示例,首先將2對應的[a],[b],[c]放入res中,然後與3對應的def組合,依次放入[ad],[ae],[af]…

class Solution {
public:
    vector<string> letterCombinations(string digits) {
        vector<string> res;
        if (digits.size()==0) return res;
        string dict[]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
        
        res.push_back("");
        for (int i=0;i<digits.
size();i++){ string str=dict[digits[i]-'2']; //取出數字對應的字母串 int n=res.size(); for (int j=0;j<n;j++){ //進行排列組合 string tmp=res.front(); //從向量中取出第一個元素並刪除 res.erase(res.begin()); for (int k=0;k<str.size();k++) res.
push_back(tmp+str[k]); } } return res; } };