leetcode 17. Letter Combinations of a Phone Number

本文介绍了一种常见的深度优先搜索(DFS)算法实现,并通过一个具体的电话号码组合问题实例进行了解析。文章提供了完整的C++代码示例,展示了如何利用递归的方法遍历所有可能的字符串组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


常见DFS题,好久没做了,有点生疏

dfs最常见的就是

dfs()

{

if(到达边界条件)

输出结果到答案

for(?;?;?)

{

给某全局变量赋值

dfs()

解除全局变量赋值

}

}



class Solution {
public:
string str[10]={" ","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};

vector<string> ans;
string dfs_str;

void dfs(string digits,int k)
{
	int num,str_len,len,i;
	string now_s;
	str_len=digits.length();
	if(k==str_len)   //若等于长度,则ans加一个字符串
	{
		ans.push_back(dfs_str);
		return ;
	}
	num=digits[k]-'0';
	now_s=str[num];
	len=now_s.length();


	for(i=0;i<len;i++) 
	{ 
		dfs_str+=now_s[i];   //dfs_str加一个字符
		dfs(digits,k+1);
		dfs_str=dfs_str.substr(0,k);  //减一个字符
	}
}


vector<string> letterCombinations(string digits)
{
    if(digits.size()==0)
        return ans;
	dfs(digits,0);
	return ans;
}
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值