IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> LeetCode 17.电话号码的字母组合 回溯法 C/C++ -> 正文阅读

[数据结构与算法]LeetCode 17.电话号码的字母组合 回溯法 C/C++

题目连接
题解参考链接

主要思路:首先用一个字符串数组digitMap[10]存储数字和字母的映射关系;然后设置两个全局变量,一个为vector< string > ans作为最终的返回结果,另一个为string s,表示已有的字母排列(回溯过程中始终维护这个字符串);该字符串s初始为空,每次取电话号码的一位数字,从digitMap中获得该数字对应的字符串,并将其中的一个字母插入到已有的字母排列后面,然后继续处理电话号码的后一位数字,直到处理完电话号码中的所有数字,即得到一个完整的字母排列。然后进行回退操作,遍历其余的字母排列。
举例:文字描述繁琐的话,最好是模拟一下就清晰了,例如digits序列为“23”,首先字符串s为空,索引index = 0,指向digits序列的第一个位置即2,然后取出2对应的字符串为abc,然后将a插入s,此时s =“a”,之后回溯,索引index+1,指向digits序列的第二个位置,即3,而3所对应的字符串为def,同样的道理,遍历该字符串def,先将d插入到s中,此时 s=“ad”,索引index+1 = 2,即此时的s为符合条件的一个完整的字母组合,将其放入最终结果ans中,然后返回,接下来运行回溯函数(backtrack())的下一句语句:s.pop_back(),即回退,把d删除,此时s=“a”,继续循环,下一个字母为e,在插入s中,s=“ae”…如此往复,最终达到最终结果。详见代码。

class Solution {
private:
	const string digitMap[10] = {
		"","","abc","def",
		"ghi","jkl","mno",
		"pqrs","tuv","wxyz"
	};
public:
	vector<string> ans;
	string s;
	void backtrack(const string& digits,int index) {
		if(index==digits.length()){
			ans.push_back(s);
			return ;
		}
		int num = digits[index]-'0';
		string letters = digitMap[num];
		for(int i = 0;i<letters.length();++i) {
			s.push_back(letters[i]);
			backtrack(digits,index+1);
			s.pop_back();

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

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:22:02  更:2022-01-03 16:22:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:49:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码