[经典面试题][百度]电话号码对应英语单词
来源:互联网 发布:电脑看盘软件 编辑:程序博客网 时间:2024/05/15 00:19
题目
现在有一个手机,手机上的键盘上有这样的对应关系,2对应”abc”,3对应”def”…..手机里面有一个userlist用户列表,当我们输入942的时候出来拼音的对应可能是“xia”,“zha”,“xi”,“yi”等,当我们输入9264的时候出来是yang,可能是“样”,“杨”,“往”等,现在我们输入一个字符串数字,比如926等,要在电话簿userlist中查找出对应的用户名和电话号码并返回结果。 C++语言: 电话号码对应的英语单词(注意此题的非递归做法)
来源
百度
代码
/*------------------------------------- * 日期:2015-03-30 * 作者:SJF0115 * 题目: 电话号码对应英语单词 * 来源:百度 * 博客: ------------------------------------*/ #include <iostream> #include <vector> using namespace std; //每个数字键对应的字母个数 vector<int> count = {0,0,3,3,3,3,3,4,3,4}; vector<string> letter = {"","","ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ"}; // phone 电话号码 n 电话号码位数 index void RecursiveSearch(vector<int> phone,vector<char> &path,int index,int n,vector<vector<char> > &result){ if(index == n){ result.push_back(path); return; }//if int num = phone[index]; for(int i = 0;i < count[num];++i){ path.push_back(letter[num][i]); RecursiveSearch(phone,path,index+1,n,result); path.pop_back(); }//for if(count[num] == 0){ RecursiveSearch(phone,path,index+1,n,result); }//if } // 非递归 vector<vector<char> > NoRecursiveSearch(vector<int> phone){ vector<vector<char> > result; vector<char> path; int size = phone.size(); if(size <= 0){ return result; }//if // 数字键目前所代表的字符在所能代表的字符集中的位置 vector<int> answer(size,0); while(true){ for(int i = 0;i < size;++i){ path.push_back(letter[phone[i]][answer[i]]); }//for result.push_back(path); path.clear(); int k = size - 1; // 每一个数字对应的字母位置 while(k >= 0){ if(answer[k] < count[phone[k]] - 1){ answer[k]++; break; }//if else{ answer[k] = 0; k--; }//else }//while if(k < 0){ break; }//if }//while } // 打印 void Print(vector<vector<char> > result){ for(int i = 0;i < result.size();++i){ for(int j = 0;j < result[i].size();++j){ cout<<result[i][j]; }//for cout<<endl; }//for } int main(){ vector<vector<char> > result; vector<char> path; vector<int> phone = {3,2,4}; RecursiveSearch(phone,path,0,phone.size(),result); Print(result); cout<<endl; result = NoRecursiveSearch(phone); Print(result); }
1 0
- [经典面试题][百度]电话号码对应英语单词
- 电话号码对应英语单词[算法]
- 3.2电话号码对应英语单词
- 3.2电话号码对应英语单词
- 电话号码对应英语单词
- 电话号码对应英语单词
- 电话号码对应的英语单词
- 电话号码对应英语单词
- 电话号码对应英语单词
- 电话号码对应的英语单词
- 电话号码对应英语单词
- 电话号码对应英语单词
- 3.2 电话号码对应英语单词
- 电话号码对应英语单词
- 电话号码对应英语单词
- 电话号码对应英语单词
- 电话号码对应的英语单词
- 3.2 电话号码对应的英语单词
- HTML5实现类似刮刮卡的功能
- 日期排序
- euler函数
- 机器学习C2数据分析Exploration(ggplot2)
- php中count获取多维数组长度的方法
- [经典面试题][百度]电话号码对应英语单词
- Obj-C中 NSString 类常用的方法
- 网络流中的一些基本概念
- 黑马程序员——Java之集合框架(三)
- matlab的padarray函数
- Spring学习(6)Spring核心思想 控制反转Ioc
- Java异常学习笔记
- 100 行代码实现的 JavaScript MVC 样式框架
- 蓝桥杯——兰顿蚂蚁