【C++】【LeetCode】17. Letter Combinations of a Phone Number

来源:互联网 发布:seo蜘蛛精怎么用 编辑:程序博客网 时间:2024/06/07 02:17

题目

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”].

思路

三层循环,依次遍历得到结果。

代码

class Solution {public:    vector<string> letterCombinations(string digits) {        vector<string> dict = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};        vector<string> result;        if (digits=="") {            return result;//digits为空时需直接返回结果        }        result.push_back("");        for (int i=0; i<digits.size(); i++) {            string singleDigit = dict[digits[i]-'0'];            if (singleDigit == "") {                continue;            }            vector<string> tmp;            for (int j=0; j<singleDigit.size(); j++) {                int k=0;                long size = result.size();                for (k=0; k<size; k++) {                                         tmp.push_back(result[k]+singleDigit[j]);                }            }            result.swap(tmp);//交换tmp和result,可以得到tmp的值,不用考虑result删除元素问题        }        return result;    }};
原创粉丝点击