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

xiaoxiao2021-02-28  89

题目

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; } };
转载请注明原文地址: https://www.6miu.com/read-39421.html

最新回复(0)