标签:扫描 git span cin ios 交换 letter lse style
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个,以此类推。
每扫一遍,结果序列和当前序列构成一个新的序列,交换结果序列和这个序列,直到扫描完全部数字字符串。
17. Letter Combinations of a Phone Number
标签:扫描 git span cin ios 交换 letter lse style
原文地址:https://www.cnblogs.com/zhuangbijingdeboke/p/9263346.html