[leetcode] Letter Combinations of a Phone Number

本文详细阐述了如何解决电话号码对应的字母组合问题,并通过一个示例代码展示了解决过程。代码实现了一个类,用于根据输入的数字字符串返回所有可能的字母组合。

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

From : https://leetcode.com/problems/letter-combinations-of-a-phone-number/

Given a digit string, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below.

Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
class Solution {
public:
    vector<string> letterCombinations(string digits) {
		vector<string> ans;
		if(digits == "") return ans;
        map<char, string> charts;
        charts['2'] = "abc";
		charts['3'] = "def";
		charts['4'] = "ghi";
		charts['5'] = "jkl";
		charts['6'] = "mno";
		charts['7'] = "pqrs";
		charts['8'] = "tuv";
		charts['9'] = "wxyz";
		find(ans, digits, charts, "", 0);
		return ans;
    }
	void find(vector<string>& ans, string dgits, map<char, string>& chts, string cur, int idx) {
	    if(cur.size() == dgits.size()) { ans.push_back(cur); return; }
	    string str = chts[dgits[idx]];
	    for(int i=0, sz=str.size(); i<sz; i++) {
			cur += str[i];
	        find(ans, dgits, chts, cur, idx+1);
			cur.pop_back();
	    }
	}
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值