大家好(大家=鸭子)!!我肥来了!
更新CSDN是和鸭子做好的约定,说好一起学习到白头,他却偷偷去揩油!嘤嘤嘤!所以不管我学了什么,我要总结一下!
今天开始刷LeetCode,然后是那道电话号码的题,能感到明显的 进步就是,有点思路,更准确的说是,知道自己哪里不会,督促我去学习,于是我无数次打开“如何使用map”“vector怎么用”之类的网站……emmmmm还是记不住那些函数,今天第一次用map,也算是初步了解了!虽然还是有问题,叹气……
贴个错误代码!
class Solution {
public:
vector<string> letterCombinations(string digits)
{
int l=digits.size();
vector<string> str;
vector<string> ans;
vector<string> rec;
if(digits == "")
return rec;
map<int, string> numlet;
numlet.insert(pair<int,string>(2,"abc"));
numlet.insert(pair<int,string>(3,"def"));
numlet.insert(pair<int,string>(4,"ghi"));
numlet.insert(pair<int,string>(5,"jkl"));
numlet.insert(pair<int,string>(6,"mno"));
numlet.insert(pair<int,string>(7,"pqrs"));
numlet.insert(pair<int,string>(8,"tuv"));
numlet.insert(pair<int,string>(9,"wxyz"));
for(int i=0;i<l;i++)
{
str[i]+=numlet[digits[i]];
int n=str[i].size();
for(int j=0;j<l;j++)
{
ans[i+j*4]+=str[i];
}
}
vector<string> ::iterator it;
for(it=ans.begin();it!=ans.end();it++)
{
rec.push_back(*it);
}
return rec;
}
};
就是简单的填鸭式暴力解法,但是有一个没修正就是有的按键是按照4个字母添加的,应该最后再筛选一下把长度不够的清除就好了,但是运行一下发现一直报错……可能语法本身有问题!等明天回去骚扰鸭子!
让我们看一下鸭子的解法!
(膜拜)
class Solution {
public:
string str[8]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
vector<string> v;
vector<string> letterCombinations(string digits) {
if(digits.size()==0) return v;
string s="";
find(0,s,digits);
return v;
}
void find(int index,string s,string digits){
if(s.size()==digits.size())
{
v.push_back(s);
return;
}
for(int i=0;i<str[digits[index]-'0'-2].size();++i)
{
s+=str[digits[index]-'0'-2][i];
find(index+1,s,digits);
s.pop_back();
}
}
};
用了递归的算法,要用递归就要自建函数,即实现自身调用。在纸上推演了一遍才了解了思路,不得不说……宋神牛逼,将军威武!!!
先总结一下小tips:字符串-‘0’可以转化为数字,这个我总是记不住,然后再-2就可对应str中的字符串了,这样省去了map的使用!非常聪明,同时提醒了我,不要忽略事物本身的顺序性……还要自己再写个map……然后有些东西可以即用即删,擅长用push_back()也要学会如何使用pop_back()!鸭子喜欢的方式就是重复覆盖,这样吧比较省内存?
这题的思路就是先找到第一个元素,然后调用自身函数,一遍遍加下面的元素,省去了判断了是3个字母还是4个字母……聪明!然后找完整的标志是判断长短,符合要求输出并返回!一遍循环结束删除s,开始下一波循环!
再次崇拜我鸭!
剩下时间不多,我就找了找关于相机标定的东西,emmmmm又是数学!!!
https://www.cnblogs.com/mikewolf2002/p/5746667.html
明儿细看!!
这周好好努力,争取周一再找导师商量一下!
886~~