leetcode-17电话号码的字母组合(回溯)[通俗易懂]

leetcode-17电话号码的字母组合(回溯)[通俗易懂]原题链接给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,”ae”,”af”,”bd”,”be”,”bf”,”cd”,”ce”,”cf”]示例 2:输入:digits = “”输出:[]示例 3:输入:digits = “2”输出:[“a”,”b”,”c”] 提示:0 <= digits.le

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原题链接
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
在这里插入图片描述

示例 1:

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

输入:digits = ""
输出:[]
示例 3:

输入:digits = "2"
输出:["a","b","c"]
 

提示:

0 <= digits.length <= 4
digits[i] 是范围 [‘2’, ‘9’] 的一个数字。

题解
回溯.

class Solution { 
   
public:
    string a[30];
    vector<string>res;
    string t = "";
    void dfs(int u,int len,string digits){ 
   
        if(u == len){ 
   
            res.push_back(t);
            return;
        }
        int num = digits[u] - '0';
        for(int i = 0;i < a[num].size();i ++){ 
   
            t.append(1,a[num][i]);
            dfs(u + 1,len,digits);
            t.erase(t.size() - 1,1);
        }
    }
    vector<string> letterCombinations(string digits) { 
   
        if(digits == "")return res;
        for(int i = 0,p = 2,cnt = 0;i < 26;i ++){ 
   
            a[p].append(1,'a' + i);
            cnt ++;
            if(cnt == 3 && p != 7 && p != 9)cnt = 0,p ++;
            else if(cnt == 4 && (p == 7 || p == 9))cnt = 0,p++;
        }
        dfs(0,digits.size(),digits);
        return res;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168727.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月8日 下午3:36
下一篇 2022年8月8日 下午3:46


相关推荐

  • OpenClaw在树莓派全流程安装部署

    OpenClaw在树莓派全流程安装部署

    2026年3月14日
    3
  • javascript引擎PK:V8 vs Spidermonkey

    javascript引擎PK:V8 vs Spidermonkey一个月前心血来潮瞎折腾了下Nodejs,用ab和JMeter进行简单地压力测试后,不得不佩服它的速度与性能(备注:测试比较了几个框架后得出的结果)。Nodejs是什么,一个基于chrome的javascriptV8引擎的platform,特点是事件驱动,异步非阻塞IO模型,轻量。本文不是给Nodejs做广告的,它只是一个引子,关于Nodejs的具体信息大家自己google吧,这里就不多作说明了。

    2022年10月16日
    5
  • 反向传播算法(过程及公式推导)「建议收藏」

    反向传播算法(过程及公式推导)「建议收藏」一、反向传播的由来在我们开始DL的研究之前,需要把ANN—人工神经元网络以及bp算法做一个简单解释。关于ANN的结构,我不再多说,网上有大量的学习资料,主要就是搞清一些名词:输入层/输入神经元,输出

    2022年8月4日
    6
  • Gearman的使用

    Gearman的使用对于分布式网络环境或者有大量任务的应用 我们需要将任务在不同的服务器之间进行分布 这个时候正好是 Gearman 发挥实力的时候 虽然我们也可以使用 MQ 队列再加一些自己实现的调度算法来将任务进行分发 但是既然已经有了成熟的产品 为什么不使用下呢 Gearman 介绍 Gearman 提供了一种通用的程序框架来将你的任务分发到不同的机器或者不同的进程当中 它提供了你进行

    2026年3月16日
    3
  • 推出AI助手APP“元宝”,能看新闻能搜索

    推出AI助手APP“元宝”,能看新闻能搜索

    2026年3月14日
    1
  • webgame开发中的文件加密

    webgame开发中的文件加密一般的webgame中都会对资源、消息进行加密,这里只是简单记录一下对文件的加密过程。上图为实际项目中所使用的加密工具(较为简单的一个air项目)输入加密key+需要加密的文件–>加密–>将加密后的文件保存至另一目录(后缀名视自己的项目的规则进行修改)实现步骤:1、读取文件(flash.filesystem.File),获取文件流(…

    2022年6月4日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号