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

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

Given a digit string, 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.

Input:Digit string "23"Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

Note:

Although the above answer is in lexicographical order, your answer could be in any order you want.

 

BFS:

1 class Solution { 2 public: 3     vector
letterCombinations(string digits) 4 { 5 vector
vs = {
"", "", "abc", "def","ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" }; 6 vector
result; 7 result.push_back(""); 8 if(digits.empty()) return {}; 9 for (size_t i = 0; i < digits.size(); ++i) {10 vector
qc;11 string strtmp(vs[digits[i]-'0']);12 for (size_t j = 0; j < strtmp.size(); ++j) {13 for (size_t k = 0; k < result.size(); ++k) {14 qc.push_back(result[k] + strtmp[j]);15 }16 }17 result = qc;18 }19 return result;20 }21 };
View Code

2% 3ms

对于含有0和1的项,比如"123",程序运行结果不符合预期.但是却通过OJ,所以此题有待严谨.

 

BFS:

 

 

class Solution {public:    vector
letterCombinations(string digits) { vector
vs = {
"", "", "abc", "def","ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" }; vector
result; result.push_back(""); if(digits.empty()) return {}; for (size_t i = 0; i < digits.size(); ++i) { vector
qc; string strtmp(vs[digits[i]-'0']); for (size_t j = 0; j < strtmp.size(); ++j) { for (size_t k = 0; k < result.size(); ++k) { qc.push_back(result[k] + strtmp[j]); } } result.swap(qc);//swap does not take memory copy } return result; }};

the method thought by  

65.33% 0ms

 

backtrackiing:

class Solution { //by luming.zhang.75(Creater) redace85(Modifier) public:    vector
letterCombinations(string digits) { vector
ret; if(0>=digits.size()) return ret; const string map[]={
"0","1","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; backTrackingFun(map,digits,"",ret); return ret; } void backTrackingFun(const string m[], const string &digits, string r, vector
&ret){ int c=r.size(); if(digits.size()==c){ ret.push_back(r); return; } auto str = m[digits.at(c)-48]; // '0' = 48 for(auto it=str.cbegin();it!=str.cend();++it){ r.push_back(*it); backTrackingFun(m,digits,r,ret); r.pop_back(); } }};

 

r size:0aar size:1dadr size:2r pop back:deaer size:2r pop back:efafr size:2r pop back:fr pop back:abbr size:1dbdr size:2r pop back:deber size:2r pop back:efbfr size:2r pop back:fr pop back:bccr size:1dcdr size:2r pop back:decer size:2r pop back:efcfr size:2r pop back:fr pop back:cadaeafbdbebfcdcecf

 

2% 3ms

转载于:https://www.cnblogs.com/guxuanqing/p/7202869.html

你可能感兴趣的文章
Nintex Forms Drop-Down "z-index"
查看>>
Windows Server 2012 IIS 8 - 安装SSL证书
查看>>
javaagent bytebuddy动态加载原理解析
查看>>
数据结构与算法-绪论
查看>>
RxSwift学习--高阶函数 / 操作符(上)
查看>>
React 新特性 Hooks 讲解及实例(三)
查看>>
关于Python装饰器,这11条你不知道,别说你精通Python装饰器
查看>>
阿里云配置Https
查看>>
Pr学习笔记
查看>>
Tex学习笔记
查看>>
二维数组中的查找
查看>>
java面向对象基础总结
查看>>
java第一次实验总结&第三周总结
查看>>
第四周总结&第二次实验报告
查看>>
AlwaysOn 执行备份任务
查看>>
Jenkins构建基于.NET Framework的web程序
查看>>
Jenkins构建基于.NET Core的web程序
查看>>
为什么要用Kubernetes?
查看>>
kubernetes实战(二十六):kubeadm 安装 高可用 k8s 1.16.x dashboard 2.x
查看>>
《博客园美化》添加雪花/修改icon
查看>>