1 题目

Leetcode第17题。 数字2-9映射字母,给出一个包含字符串的数字,列出字母的所有组合。

2 递归

拿到这样的题目想到了递归实现,创建一个Map映射对应的字母,然后把它传给递归函数,同时创建一个临时变量temp,保存每一次添加字母的结果,递归的结束条件是数字串的长度为0.

public void one(String digits,List result,HashMap ss,String temp)

{

if(digits.length() > 0)

{

String s = ss.get((int)(digits.charAt(0))-48);

for(int i=0;i

one(digits.substring(1),result,ss,temp+s.charAt(i));

}

else

result.add(temp);

}

3 提交

直接一次AC.

4 优化

其实可以不需要Map的,可以直接使用一个字符串数组,因为是数字到字符串的映射,对于数字可以用下标代替。其次,为了更快的速度可以使用StringBuilder代替String.

还有就是用下标代替了截断digits,对于digits其实没必要使用截断,只需要一个下标表示范围即可,对于StringBuilder,因为没有像String这样的+,因此需要在使用append后对其进行删除处理。

public void one(String digits,int index,StringBuilder temp)

{

if(index < digits.length())

{

String d = s[digits.charAt(index)-'0'];

for(int i=0;i

{

one(digits,index+1,temp.append(d.charAt(i)));

temp.deleteCharAt(index);

}

}

else

result.add(temp.toString());

}

5 源码

java 三个字母组合_每天AC系列(三):电话号码的字母组合相关推荐

  1. leetcode系列--17.电话号码的字母组合

    leetcode系列–第17题.电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.答案可以按 任意顺序 返回. 给出数字到字母的映射如下(与电话按键相同).注意 1 ...

  2. 三点估算法_详解:三点估算法

    经常有人调侃:PMP老玩文字游戏,来当语文老师吧!可是,语文不重要吗? 不光语文重要啊,数学也重要.先来三道题目试试: 1. 为了制作项目原型,项目经理必须采购三盎司的黄金.当前的市场价值为每盎司 1 ...

  3. java search 不能使用方法_ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程

    前言 在上一篇中介绍了ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解,本篇文章就来讲解下 ElasticSearch 6.x官方Java API的 ...

  4. java字符编码问题_JAVA字符编码系列三:Java应用中的编码问题

    1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是" ...

  5. 我的世界java下载慢怎么办_只需要这三步,用Java也能图片识别

    作者:不学无数的程序员 最近闲来无事研究了一下用 Java 如何模拟浏览器的行为,在实验登录的步骤时碰到了识别验证码的问题,于是在网上查找了关于 Java 如何进行图片识别验证码,由于根据网上查找的相 ...

  6. mac 查看mysql是否安装_[简明核心系列] 三分钟Mac安装MySQL教程

    作者: @向三 高质量学习 QQ 群: 1021386120 自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 文章结构: 前言 安装 HomeBre ...

  7. java 二叉堆_二叉堆(三)之 Java的实现

    概要 前面分别通过C和C++实现了二叉堆,本章给出二叉堆的Java版本.还是那句话,它们的原理一样,择其一了解即可. 二叉堆的介绍 二叉堆是完全二元树或者是近似完全二元树,按照数据的排列方式可以分为两 ...

  8. java自定义findbugs规则_静态代码扫描 (三)——FindBugs 自定义规则入门

    准备工作 由于 FindBugs 是分析编译后的 class 文件,也就是字节码文件.我们需要了解 FindBugs 底层的处理机制.根据FindBugs 官网文档描述,FindBugs 使用了BCE ...

  9. java 常用 函数式接口_「java8系列」神奇的函数式接口

    前言 在上一篇Lambda的讲解中我们就提到过函数式接口,比如:Consumer consumer = (s) -> System.out.println(s);其中Consumer就是一个函数 ...

最新文章

  1. 计算机应用基础怎么教作业,北京语言大学网络教育2017春计算机应用基础作业(1)及答案...
  2. 洛谷P2501数字序列 动态规划
  3. 在Linux-0.11中实现基于内核栈切换的进程切换
  4. python 关键字 with_Python 中的with关键字使用详解
  5. 八大算法思想(二)------------------递归算法
  6. myBatis association的两种形式
  7. 整理struct sockaddr和struct sockaddr_in
  8. Android Studio 自定义字体显示英文音标
  9. Gbase与oracle数据库的区别
  10. 关于Vue SSR不可不知的问题
  11. android 文件下载地址 http,android文件下载代码
  12. PHP上传视频到阿里云oss
  13. 电商直播的直播类型有哪些?
  14. Oracle 精编实用手册
  15. 是用JDBC从数据库中获取数据并以java对象返回
  16. 安全模式怎么更改计算机用户,电脑怎么关闭安全模式步骤详解
  17. java conversion_java 基本数据类型之间的转换(Conversion between Java basic data types).doc...
  18. 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(下)
  19. 以外派的身份进大厂,或许条程序员升级的途径
  20. 在长沙参保,但是省内外地已经制作了社保卡,要如何处理?

热门文章

  1. ps切片工具里没有html,PS切片工具怎么用?PS切片工具的使用方法
  2. python智力问答游戏代码,python实现智力问答测试小程序
  3. html 复选框 不能编辑,javascript-jqGrid-复选框编辑无法编辑所选行
  4. MySQL:日期和时间函数
  5. 用UltraISO制作Ubuntu_18.04U盘启动盘
  6. 父向子通信(propos基本用法/驼峰命名问题)
  7. 【深度学习】实例分割网络
  8. 解决前端警告: Warning: Failed prop type: Invalid prop value of type number supplied to Textinput
  9. numpy中的ndarray方法和属性
  10. cygwin安装linux教程,Cygwin,让你拥有Windows下的Linux环境