题目
代码
class Solution {
const char* numsStrArr[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
public:
void Combine(const string& digits, int i,string CombineStr,vector<string>& ret )
{
if(i==digits.size())
{
ret.push_back(CombineStr);
return ;
}
int num =digits[i]-'0';
string str =numsStrArr[num];
for(auto e:str)
{
Combine(digits,i+1,CombineStr+e,ret);
}
}
vector<string> letterCombinations(string digits) {
vector<string> ret;
if(digits=="")
{
return ret;
}
string str;
Combine(digits,0,str,ret);
return ret;
};
};
思路及代码讲解
-
在类中定义一个私有成员变量numsStrArr,它是一个包含了数字0到9的字符串数组,每个数字对应一组可能的字母。例如,numsStrArr[2]对应的是”abc“,numsStrArr[3]对应的是”def“,以此类推。
-
接下来是函数Combine,它是一个递归函数,用于生成数字字符串的所有可能的字母组合。参数digits是输入的数字字符串,参数i表示当前处理的数字索引,参数CombineStr表示已经组合好的字母字符串,参数ret是存储结果的向量。
-
函数首先检查递归结束的条件,即当i等于digits的长度时,将已经组合好的字符串CombineStr加入到结果向量ret中,并返回。
-
然后,函数使用一个循环遍历str中的每个字母,并调用自身递归地处理下一个数字索引i+1,并将当前字母添加到已经组合好的字符串CombineStr后面。
代码(有注释版)
class Solution {
const char* numsStrArr[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
// 数字对应的字母组合数组
public:
// 递归生成数字字符串的所有可能的字母组合
void Combine(const string& digits, int i, string CombineStr, vector<string>& ret ) {
// 递归结束条件:已经处理完所有数字
if(i==digits.size()) {
// 将已经组合好的字符串加入结果向量
ret.push_back(CombineStr);
return ;
}
int num =digits[i]-'0';
// 获取当前数字对应的字母字符串
string str =numsStrArr[num];
// 遍历当前数字对应的字母字符串中的每个字母
for(auto e:str) {
// 递归处理下一个数字索引,并将当前字母添加到已经组合好的字符串后面
Combine(digits,i+1,CombineStr+e,ret);
}
}
// 生成数字字符串的所有可能的字母组合
vector<string> letterCombinations(string digits) {
vector<string> ret;
if(digits=="") {
return ret; // 如果输入字符串为空,则直接返回空结果向量
}
string str;
// 调用递归函数生成所有可能的字母组合
Combine(digits, 0, str, ret);
return ret; // 返回结果向量
};
};
(本题完)
原文地址:https://blog.csdn.net/originalHSL/article/details/134734494
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_49168.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。