Letter Combinations of a Phone Number
题目这里就不copy过来了,以免有凑篇幅的嫌疑。对于手机键盘的字母分布,其实我们大家都非常的熟悉,需要注意的是,我也是通过跑网站提供的用例才发现,就是但凡你输入了0或者1,那么最后的结果就是空。这里我提供一个比较naive的解法,将输入的数字串拆分,分别对应相应的键盘字符串,然后加入到结果集合中,不断的加入新字符,并更新结果集合。代码如下:
class Solution {
public:
vector<string> strs={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz",};
vector<string> letterCombinations(string digits) {
vector<string> res;
for(int i=0;i<digits.size();++i){
char cur=digits[i];
if(cur=='0'||cur=='1'){
res.clear();
return res;
}
int index=cur-'0';
string temp = strs[index];
if(res.empty()){
for(int j=0;j<temp.size();++j)
res.push_back(temp.substr(j,1));
}else{
vector<string> tempres;
for(int j=0;j<temp.size();++j){
for(int m=0;m<res.size();++m){
tempres.push_back(res[m]+temp[j]);
}
}
res = tempres;
}
}
return res;
}
};
题目这里就不copy过来了,以免有凑篇幅的嫌疑。对于手机键盘的字母分布,其实我们大家都非常的熟悉,需要注意的是,我也是通过跑网站提供的用例才发现,就是但凡你输入了0或者1,那么最后的结果就是空。这里我提供一个比较naive的解法,将输入的数字串拆分,分别对应相应的键盘字符串,然后加入到结果集合中,不断的加入新字符,并更新结果集合。代码如下:
class Solution {
public:
vector<string> strs={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz",};
vector<string> letterCombinations(string digits) {
vector<string> res;
for(int i=0;i<digits.size();++i){
char cur=digits[i];
if(cur=='0'||cur=='1'){
res.clear();
return res;
}
int index=cur-'0';
string temp = strs[index];
if(res.empty()){
for(int j=0;j<temp.size();++j)
res.push_back(temp.substr(j,1));
}else{
vector<string> tempres;
for(int j=0;j<temp.size();++j){
for(int m=0;m<res.size();++m){
tempres.push_back(res[m]+temp[j]);
}
}
res = tempres;
}
}
return res;
}
};