我是靠谱客的博主 苗条柠檬,最近开发中收集的这篇文章主要介绍17. Letter Combinations of a Phone Number,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 1 static int wing=[]()
 2 {
 3     std::ios::sync_with_stdio(false);
 4     cin.tie(NULL);
 5     return 0;
 6 }();
 7 
 8 class Solution 
 9 {
10 public:
11     vector<string> letterCombinations(string digits) 
12     {
13         vector<string> res;
14         if(digits.empty())
15             return res;
16         static vector<string> v{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
17         res.push_back("");
18         int lendigits=digits.length();
19         for(int i=0;i<lendigits;i++)
20         {
21             int num=digits[i]-'0';
22             if(num<0||num>9)
23                 break; 
24             const string &candidate=v[num];
25             int lencan=candidate.length();
26             int lenres=res.size();
27             if(candidate.empty())
28                 continue;
29             vector<string> cur;
30             for(int j=0;j<lencan;j++)
31             {
32                 for(int k=0;k<lenres;k++)
33                 {
34                     string kk=res[k];
35                     kk.push_back(candidate[j]);
36                     cur.push_back(kk);
37                 }
38             }
39             res.swap(cur);
40         }
41         return res;   
42     }
43 };

一轮一轮扫描添加即可。

结果容器初始为一个空字符,扫第一轮,添加3个字母,扫第二轮,3个字母分别添加当前字符串的每个字符,3个变9个,以此类推。

每扫一遍,结果序列和当前序列构成一个新的序列,交换结果序列和这个序列,直到扫描完全部数字字符串。

转载于:https://www.cnblogs.com/zhuangbijingdeboke/p/9263346.html

最后

以上就是苗条柠檬为你收集整理的17. Letter Combinations of a Phone Number的全部内容,希望文章能够帮你解决17. Letter Combinations of a Phone Number所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部