leetcode-17

 1 class Solution {
 2 public:
 3     vector<string> vec;
 4     string temp;
 5     void LetterCombinations(string digits,int len,map<char,string>nums_map,int index){
 6         if(index==len)
 7         {  vec.push_back(temp);
 8             return;}
 9            char strnum=digits[index];
10             string strletter=nums_map[strnum];
11             for(int i=0;i<strletter.size();++i){
12                 temp.push_back(strletter[i]);
13                 LetterCombinations(digits,len,nums_map,index+1);
14                 temp.pop_back();
15             }
16     }
17     vector<string> letterCombinations(string digits) {
18         map<char,string> nums_map;
19         nums_map['0']="";
20         nums_map['1']="";
21         nums_map['2']="abc";
22         nums_map['3']="def";
23         nums_map['4']="ghi";
24         nums_map['5']="jkl";
25         nums_map['6']="mno";
26         nums_map['7']="pqrs";
27         nums_map['8']="tuv";
28         nums_map['9']="wxyz";
29         if(digits.size()==0)
30             return vec;
31           LetterCombinations(digits,digits.size(),nums_map,0);
32         return vec;
33         }
34         
35     };

这道题刚开始写错了,leetcode也没有提示,最后复制到vs上,提醒我下标越界了。。原来是我的递归函数写错了,我写成了

LetterCombinations(digits,len,nums_map,++index);//错误!!

如果写成index++,那么改变的就是index的值,最终回溯的时候,就会导致越界

猜你喜欢

转载自www.cnblogs.com/illfuckingkyzb/p/10147223.html