17. 电话号码的字母组合
这题还是看了题解才写出来。一开始不懂得每一层递归处理不同数字对应的字母,又想一些二维数组的操作,就搞复杂了。
题中的index就代表当前正在处理第几个数字对应的字母,循环中,压入这个之后就轮到下一个数字的对应字母,最后再返回。
想这种不知道会输入多少个数字的最好的方法就是递归,如果用for循环根本不知道要循环多少次
class Solution { public: vector<string> map = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; vector<string> res; string path; int size; void letterTracking(string digits,int index) { if(index==size) { res.push_back(path);return; } int digit=digits[index]-'0'; string letters=map[digit]; for(int i=0;i<letters.size();i++) { path.push_back(letters[i]); letterTracking(digits,index+1); path.pop_back(); } } vector<string> letterCombinations(string digits) { size=digits.size(); if(size==0) return res; letterTracking(digits,0); return res; } };
标签:digits,index,string,int,res,电话号码,leetcode17,字母组合,size From: https://www.cnblogs.com/uacs2024/p/16724082.html