博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
17. Letter Combinations of a Phone Number (DFS, String)
阅读量:4073 次
发布时间:2019-05-25

本文共 1191 字,大约阅读时间需要 3 分钟。

17. Letter Combinations of a Phone Number

Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.

思路:

还是通用DFS的套路,每一位依次在所有可能字符循环,然后递归到下一个号码,直到位数已满就回溯。

这道题的注意点是对字符串和char的处理。

把键盘的对应存在数组当中,去对应字符串的时候有一操作很巧妙:

String cur = keys[digits.charAt(dig_pos)-'0'];//将char转成数字

注意‘0’,‘1’都对应“”(空字符串)。

private String[] keys = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};        public List
letterCombinations(String digits) { List
res = new ArrayList
(); if(digits==null || digits.equals("")) return res; doCombine("",res,0,digits); return res; } private void doCombine(String tmp, List
res, int dig_pos,String digits){ if(tmp.length()==digits.length()){ res.add(tmp); return; } String cur = keys[digits.charAt(dig_pos)-'0'];//将char转成数字 for(char c:cur.toCharArray()){ String nstr = tmp + c; doCombine(nstr,res,dig_pos+1,digits); } }

 

转载地址:http://dnfni.baihongyu.com/

你可能感兴趣的文章
Printf的格式符记忆
查看>>
华清老师对于编程学习方法的一些描述
查看>>
我对指针的一些总结
查看>>
对于字符串的引用的写法的一些说明(区分字符串常量和字符数组)
查看>>
用指针做函数输入形参的原因!是因为这样能在函数中改变实参的值,现在才明白。
查看>>
C语言的一些注意细节
查看>>
关于main函数的返回值,这个讲得很好!
查看>>
SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包“
查看>>
linux shell中一些有用的
查看>>
shell编程第一行#!/bin/bash的作用
查看>>
shell脚本对空格有严格的规定,赋值语句等号两边不能有空格,而字符串比较,等号两边必须有空格
查看>>
shell编程有感(也有关于学习方法,做题!!!)
查看>>
GCC编译过程
查看>>
对网络编程以及Linux应用层编程有了更多的理解
查看>>
C语言的内存分配
查看>>
关于题库
查看>>
推荐一本书《高质量嵌入式linux C编程》
查看>>
C语言的return用法
查看>>
关于程序=数据结构+算法
查看>>
自学的误区,自学学习要重视基础,一步一步来,循序渐进
查看>>