天天育儿网,内容丰富有趣,生活中的好帮手!
天天育儿网 > [经典面试题][百度]电话号码对应英语单词

[经典面试题][百度]电话号码对应英语单词

时间:2021-07-04 10:37:02

相关推荐

[经典面试题][百度]电话号码对应英语单词

题目

现在有一个手机,手机上的键盘上有这样的对应关系,2对应”abc”,3对应”def”…..手机里面有一个userlist用户列表,当我们输入942的时候出来拼音的对应可能是“xia”,“zha”,“xi”,“yi”等,当我们输入9264的时候出来是yang,可能是“样”,“杨”,“往”等,现在我们输入一个字符串数字,比如926等,要在电话簿userlist中查找出对应的用户名和电话号码并返回结果。 C++语言: 电话号码对应的英语单词(注意此题的非递归做法)

来源

百度

代码

/*-------------------------------------* 日期:-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 电话号码位数 indexvoid RecursiveSearch(vector<int> phone,vector<char> &path,int index,int n,vector<vector<char> > &result){if(index == n){result.push_back(path);return;}//ifint 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();}//forif(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]]);}//forresult.push_back(path);path.clear();int k = size - 1;// 每一个数字对应的字母位置while(k >= 0){if(answer[k] < count[phone[k]] - 1){answer[k]++;break;}//ifelse{answer[k] = 0;k--;}//else}//whileif(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];}//forcout<<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);}

如果觉得《[经典面试题][百度]电话号码对应英语单词》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。