栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode C++24-电话号码的字母组合

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode C++24-电话号码的字母组合

题目描述

       leetcode原题链接:电话号码的字母组合

       给定一个仅包含2-9的字符串,返回所有它能表示的字母组合。答案可以按任何顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。

        

举例

示例 1:输入:digits = "23"    输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:输入:digits = ""        输出:[]
示例 3:输入:digits = "2"      输出:["a","b","c"]

解题方法:回溯搜索

代码
#include 
#include 
#include 
#include 

void backtrack(std::vector& result, 
		  std::map& mp,
		  const std::string& nums,
		  std::string& str) {
	if (str.size() == nums.size()) {
		result.push_back(str);
	}
	int idx = str.size();// 每次向str加入一个元素后,相当于++idx
	char key = nums[idx];//从nums获取对应的mp的key
	std::string candidates = mp[key];
	for (char ch : candidates) { //回溯搜索的核心代码
		str.push_back(ch);
		backtrack(result, mp, nums, str);
		str.pop_back();
	}
}

std::vector digit_combination(const std::string& nums) {
	std::vector result;
	std::map mp = {
		{'2', "abc"},
		{'3', "def"},
		{'4', "ghi"},
		{'5', "jkl"},
		{'6', "mno"},
		{'7', "pqrs"},
		{'8', "tuv"},
		{'9', "wxyz"}
	};
	std::string str("");
	backtrack(result, mp, nums, str);
	return result;
}

void print_result(const std::string&nums, 
				  const std::vector& result) {
	std::cout << "========" << std::endl;
	std::cout << "input:" << std::endl;
	for (auto num : nums) {
		std::cout << num << " ";
	}
	std::cout << std::endl;
	std::cout << "output:" << std::endl;
	for (auto& str : result) {
		std::cout << str << std::endl;
	}
}

int main()
{
	// nums="23" ==> ["ad,"ae","af","bd","be","bf","cd","ce","cf"]
	std::string nums = "23";
	std::vector result = digit_combination(nums);
	print_result(nums, result);
	// nums="" ==> []
	nums = "";
	result = digit_combination(nums);
	print_result(nums, result);
	// nums="2" ==>["a","b","c"]
	nums = "2";
	result = digit_combination(nums);
	print_result(nums, result);
    return 0;
}

代码运行结果如下:

========
input:
2 3 
output:
ad
ae
af
bd
be
bf
cd
ce
cf
========
input:

output:

========
input:
2 
output:
a
b
c

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/766928.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号