天天看點

Letter Combinations of a Phone Number(middle)

Given a digit string, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below.

Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
      

該題題解主要要找到應該從哪兒開始循環,從解來看,最外層循環應該是上次解的集合,裡面的循環是數字所對應的字元。

通過vector臨時存儲目前循環的解。

class Solution {
public:
    vector<string> letterCombinations(string digits) {
        vector<string> num_to_string ={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
        int len = digits.length();
        vector<string> result;
        if(len==0)return result;
        result.push_back("");
        for(int i=0;i<len;i++){
            int num=digits[i]-'0';
            int len_num=num_to_string[num].size();
            vector<string> tmp;//臨時集合
            for(int j=0;j<len_num;j++){
                int len_result=result.size();
                for(int k=0;k<len_result;k++){
                    tmp.push_back(result[k]+num_to_string[num][j]);
                }
            }
            result=tmp;
        }
        return result;
    }
};