前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 17. 电话号码的字母组合(搜索)(回溯)

LeetCode 17. 电话号码的字母组合(搜索)(回溯)

作者头像
SakuraTears
发布2022-01-13 14:41:32
1360
发布2022-01-13 14:41:32
举报
文章被收录于专栏:从零开始的Code生活

题目

ZPfslGWZaJ.png
ZPfslGWZaJ.png

思路

用DFS挨个搜索,把几个数字代表的字母存放到一个数组里,数组前两个为空让数组的值对应2~9。

DFS中传入两个参数:第一个每次递归传递的的字符串,第二个n表示当前从第几个数字里取值。

定义int m = int(dig[n] - 48);("23"第一次递归m = 2,第二次m = 3,对应arr中的字符串)

根据题意结果中每个字符串字符个数与digits的长度相同,所以if (n == dig.size())表示这一串搜索完成,将字符串添加到结果数组然后回溯。

代码语言:javascript
复制
class Solution {
public:
    vector<string> arr = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
    vector<string> res;
    string dig;

    void dfs(string str, int n) {
        int m = int(dig[n] - 48);
        if (n == dig.size()) {
            res.push_back(str);
            return;
        }
        for (int i = 0; i < arr[m].size(); i++) {
            dfs(str + arr[m][i], n + 1);
        }
    }

    vector<string> letterCombinations(string digits) {
        if (digits.size() == 0) return res;
        dig = digits;
        dfs("", 0);
        return res;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年03月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档