思路

1、首先观察每个电话号码键上数字和字母的关系
对于1-7键:字母=2*(‘数字’-‘2’)+47
对于8-9键:字母=2*(‘数字’-‘2’)+48
2、接着就是回溯的思路,先循环变动最后一个位置上的值,接着循环变动倒数第二个位置上的值。。。。依次往下,直到第一个位置

代码

class Solution {/**1.如果需要全局使用可以设置为类变量2.回溯的思路,用于实现找所有可行解,前面的位置不动,先动后面的位置,直到找到所有解*/private  List<String> list=new ArrayList<>();private  StringBuffer sb=new StringBuffer();public   List<String> letterCombinations(String digits) {if(digits.length()==0){return list;}getCombinations(0,digits.length(),digits);return list;}public   void getCombinations(int n, int length, String digits) {if(n==length){list.add(sb.toString());return;}//n位置需要循环m次char c=digits.charAt(n);int m=(c=='9' || c=='7')?4:3;int inter=0;if(c<'8'){inter=2*(c-'2')+47;}else{inter=2*(c-'2')+48;}for(int i=0;i<m;i++){//appendCodePoint添加一个字符,相当于appendCodePoint(97) == append(Character.toChars(97)) //这其实也是一个回溯的思路//先将0位置放上值,然后去遍历后面的位置的值,一步一步再回溯回来sb.appendCodePoint(c+i+inter);            getCombinations(n+1,length,digits);//等回溯回来的时候,需要把最后一个位置上的数据删除,便于更新最后一个位置上的数据sb.deleteCharAt(sb.length()-1);}}
}

【力扣17】电话号码的字母组合相关推荐

  1. leetcode力扣17.电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出:[&quo ...

  2. 力扣:电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 输入:"23" 输出:["ad ...

  3. Day25 LeetCode 216. 组合总和 III 17. 电话号码的字母组合

    题目:216. 组合总和 III - 力扣(LeetCode) 思路: 1.递归函数参数和返回值:首先需要两个全局变量一维path数组和二维result数组,path数组用来收集路径上的元素,resu ...

  4. 代码随想录 第二十四天 17.电话号码的字母组合||216.组合总和III

    216.组合总和III 力扣题目链接(opens new window) 找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. 说明: ...

  5. 代码随想录第25天|216.组合总和III,17.电话号码的字母组合

    LeetCode216.组合总和||| 题目链接:216. 组合总和 III - 力扣(LeetCode) 思路: class Solution { public:int sum = 0,start ...

  6. 代码随想录算法训练营第25天|216.组合总和III,17.电话号码的字母组合

    216.组合总和III 力扣题目链接 思路 在组合的基础上加限制条件 剪枝操作 //当和大于n时,往后遍历没有意义,剪枝 if(sum>n){return; } //当剩下的元素个数不足时,剪枝 ...

  7. 代码随想录算法训练营第二十五天|216.组合总和III 17.电话号码的字母组合

    目录 LeeCode 216.组合总和III LeeCode 17.电话号码的字母组合 LeeCode 216.组合总和III 216. 组合总和 III - 力扣(LeetCode) 思路:本题和 ...

  8. 【LeetCode】【HOT】17. 电话号码的字母组合(递归)

    [LeetCode][HOT]17. 电话号码的字母组合 文章目录 [LeetCode][HOT]17. 电话号码的字母组合 package hot;import java.util.ArrayLis ...

  9. [DFS|回溯法] leetcode 17 电话号码的字母组合

    [DFS|回溯法] leetcode 17 电话号码的字母组合 1.题目 题目链接 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 ...

  10. day21|216.组合总和III、17.电话号码的字母组合

    216.组合总和III 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回所有可能的有效组合的列表 .该列表不能包含相同的组合两次,组合可以以 ...

最新文章

  1. Django快速开发之投票系统
  2. php js 比较大小写,jQuery-JavaScript比较字符串而不区分大小写
  3. protobuf中 repeated[Ptr]Field的序列化
  4. centos mysql 远程连接_Linux下开启MySQL的远程连接
  5. vue中设置height:100%无效的问题及解决方法
  6. pat乙级相当于什么水平_雅思6.5是什么水平?相当于托福多少分?
  7. htnl 点击系统记录显示在右侧_软网推荐:时间管理者 记录工时与薪酬
  8. Google Play在GDC大会上发布全新工具及游戏
  9. Unicode编码在JavaScript中的作用是什么?
  10. 有什么软件可以测试游戏视频数据,免费录制游戏视频软件有哪些?看完你就知道了...
  11. 动态链表头插法 和 动态尾插法
  12. HDU——2647 Reward
  13. 爬虫之巨潮资讯网关键词信息获取
  14. win10系统回收站清空了怎么恢复?简单几步找回丢失文件
  15. java虚拟机开源_IBM J9 Java虚拟机正式开源
  16. opporeno6pro+和reno5pro+参数配置详细
  17. 简述数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型
  18. Android 禁用电源键音量键与模拟
  19. 目前计算机常用的CPU型号,价格差异太大了!教你选择CPU型号及常见CPU后缀字母详解...
  20. 哔哩哔哩,除了二次元的其他东西,包爽

热门文章

  1. 实现多线程的方法到底有1种还是2种还是4种?
  2. 利用Vant完成登录页面!
  3. tar解压时提示Cannot open: File exists
  4. 面试必看的注意事项在这里!
  5. 常见的网络设备:集线器 hub、网桥、交换机 switch、路由器 router、网关 gateway
  6. feifei_about
  7. 圣帕特里克 VoxEdit 大赛
  8. 用python绘制圆中圆
  9. 数学基础(矢量, 向量,矩阵,相等,加法,乘法)
  10. 怎么成为日上会员直邮_怎么成为日上会员vip