leetcode 17 Letter Combinations of a Phone Number

本文详细解析了一种使用回溯法解决电话号码对应字母组合的算法。通过创建数字到字母的映射,并运用递归函数,实现了从2到9所有可能的字母组合。文章提供了完整的代码实现,展示了如何遍历每一种可能的字符组合。

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

Given a string containing digits from 2-9 inclusive, 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. Note that 1 does not map to any letters.

Example:

Input: "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

Note:

Although the above answer is in lexicographical order, your answer could be in any order you want.

 
思路:回溯法
 1 class Solution {
 2 private:
 3     // 创建映射map
 4     unordered_map<char, string> num2char {{'2', "abc"}, {'3', "def"}, {'4', "ghi"}, {'5', "jkl"},
 5                                           {'6', "mno"}, {'7', "pqrs"}, {'8', "tuv"}, {'9', "wxyz"}};
 6     
 7     void letterCombinations(vector<string> &res, string &combination, string digits, int index, int len) {
 8         if (index == len) {
 9             res.push_back(combination);
10             return;
11         }
12         //遍历第index位可以选择的字符
13         for (char c : num2char[digits[index]]) {
14             combination.push_back(c);
15             letterCombinations(res, combination, digits, index + 1, len);
16             combination.pop_back();
17         } 
18         /*
19         string current = num2char[digits[index]];
20         for (int i = 0; i < current.length(); i++) {
21             combination.push_back(current[i]);
22             letterCombinations(res, combination, digits, index + 1, len);
23             combination.pop_back();
24         } */
25     }
26 public:
27     vector<string> letterCombinations(string digits) {
28     
29         int len = digits.length();
30         vector<string> res;
31         if (len == 0) {
32             return res;
33         }
34         
35         string combination;
36         letterCombinations(res, combination, digits, 0, len);
37         return res;
38     }
39 };

 

转载于:https://www.cnblogs.com/qinduanyinghua/p/11428161.html

内容概要:本文探讨了在MATLAB/SimuLink环境中进行三相STATCOM(静态同步补偿器)无功补偿的技术方法及其仿真过程。首先介绍了STATCOM作为无功功率补偿装置的工作原理,即通过调节交流电压的幅值和相位来实现对无功功率的有效管理。接着详细描述了在MATLAB/SimuLink平台下构建三相STATCOM仿真模型的具体步骤,包括创建新模型、添加电源和负载、搭建主电路、加入控制模块以及完成整个电路的连接。然后阐述了如何通过对STATCOM输出电压和电流的精确调控达到无功补偿的目的,并展示了具体的仿真结果分析方法,如读取仿真数据、提取关键参数、绘制无功功率变化曲线等。最后指出,这种技术可以显著提升电力系统的稳定性与电能质量,展望了STATCOM在未来的发展潜力。 适合人群:电气工程专业学生、从事电力系统相关工作的技术人员、希望深入了解无功补偿技术的研究人员。 使用场景及目标:适用于想要掌握MATLAB/SimuLink软件操作技能的人群,特别是那些专注于电力电子领域的从业者;旨在帮助他们学会建立复杂的电力系统仿真模型,以便更好地理解STATCOM的工作机制,进而优化实际项目中的无功补偿方案。 其他说明:文中提供的实例代码可以帮助读者直观地了解如何从零开始构建一个完整的三相STATCOM仿真环境,并通过图形化的方式展示无功补偿的效果,便于进一步的学习与研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值