小米面试题:手机分身,电话号码隐藏。
小米面试题:
手机分身,电话号码隐藏。
0-9分别对应ZERO,ONE,TWO,...,NINE
为保证手机拨号安全性,拨号后,存为对应的字符串,并打乱顺序,保证安全性。
现在给定一个字符串,求最小的数字组合
例:
TWOONE
OTNWOE
12
12
分析:
关键字搜索: | 第一次 | 第二次 | 第三次 |
0 ZERO | Z | ||
1 ONE | O | ||
2 TWO | W | ||
3 THREE | R | ||
4 FOUR | U | ||
5 FIVE | F | ||
6 SIX | X | ||
7 SENVE | S | ||
8 EIGHT | G | ||
9 NINE | I/E |
代码实现如下:
1 #include "stdafx.h" 2 #include<string> 3 #include<iostream> 4 using namespace std; 5 6 int main() 7 { 8 int zidian[26],number[10]; 9 memset(zidian,0,26*sizeof(int)); 10 memset(number,0,10*sizeof(int)); 11 string numberString; 12 while(cin >> numberString) 13 {//while循环,无限获取测试用例 14 for (int i = 0; i < numberString.size(); i++) 15 {//for循环建立字典索引,直接针对字典查,而不再单个搜索。 16 char tempChar = numberString[i]; 17 zidian[(int)tempChar - 65] += 1; 18 } 19 int tempNum; 20 //查找0 ZERO Z 21 if(zidian[(int)'Z' - 65] != 0) 22 { 23 tempNum = zidian[(int)'Z' - 65]; 24 zidian[(int)'Z' - 65] = 0; 25 zidian[(int)'E' - 65] -= tempNum; 26 zidian[(int)'R' - 65] -= tempNum; 27 zidian[(int)'O' - 65] -= tempNum; 28 number[0] = tempNum; 29 } 30 //查找2 TWO W 31 if(zidian[(int)'W' - 65] != 0) 32 { 33 tempNum = zidian[(int)'W' - 65]; 34 zidian[(int)'W' - 65] = 0; 35 zidian[(int)'T' - 65] -= tempNum; 36 zidian[(int)'O' - 65] -= tempNum; 37 number[2] = tempNum; 38 } 39 //查找4 FOUR U 40 if(zidian[(int)'U' - 65] != 0) 41 { 42 tempNum = zidian[(int)'U' - 65]; 43 zidian[(int)'U' - 65] = 0; 44 zidian[(int)'F' - 65] -= tempNum; 45 zidian[(int)'R' - 65] -= tempNum; 46 zidian[(int)'O' - 65] -= tempNum; 47 number[4] = tempNum; 48 } 49 //查找6 SIX X 50 if(zidian[(int)'X' - 65] != 0) 51 { 52 tempNum = zidian[(int)'X' - 65]; 53 zidian[(int)'X' - 65] = 0; 54 zidian[(int)'S' - 65] -= tempNum; 55 zidian[(int)'I' - 65] -= tempNum; 56 number[6] = tempNum; 57 } 58 //查找8 EIGHT G 59 if(zidian[(int)'G' - 65] != 0) 60 { 61 tempNum = zidian[(int)'G' - 65]; 62 zidian[(int)'G' - 65] = 0; 63 zidian[(int)'E' - 65] -= tempNum; 64 zidian[(int)'I' - 65] -= tempNum; 65 zidian[(int)'H' - 65] -= tempNum; 66 zidian[(int)'T' - 65] -= tempNum; 67 number[8] = tempNum; 68 } 69 //查找1 ONE O 70 if(zidian[(int)'O' - 65] != 0) 71 { 72 tempNum = zidian[(int)'O' - 65]; 73 zidian[(int)'O' - 65] = 0; 74 zidian[(int)'N' - 65] -= tempNum; 75 zidian[(int)'E' - 65] -= tempNum; 76 number[1] = tempNum; 77 } 78 //查找3 THREE R 79 if(zidian[(int)'R' - 65] != 0) 80 { 81 tempNum = zidian[(int)'R' - 65]; 82 zidian[(int)'R' - 65] = 0; 83 zidian[(int)'T' - 65] -= tempNum; 84 zidian[(int)'H' - 65] -= tempNum; 85 zidian[(int)'E' - 65] -= 2 * tempNum; 86 number[3] = tempNum; 87 } 88 //查找5 FIVE F 89 if(zidian[(int)'F' - 65] != 0) 90 { 91 tempNum = zidian[(int)'F' - 65]; 92 zidian[(int)'F' - 65] = 0; 93 zidian[(int)'I' - 65] -= tempNum; 94 zidian[(int)'V' - 65] -= tempNum; 95 zidian[(int)'E' - 65] -= tempNum; 96 number[5] = tempNum; 97 } 98 //查找7 SEVEN S 99 if(zidian[(int)'S' - 65] != 0) 100 { 101 tempNum = zidian[(int)'S' - 65]; 102 zidian[(int)'S' - 65] = 0; 103 zidian[(int)'E' - 65] -= 2 * tempNum; 104 zidian[(int)'V' - 65] -= tempNum; 105 zidian[(int)'N' - 65] -= tempNum; 106 number[4] = tempNum; 107 } 108 //查找9 NINE I 109 if(zidian[(int)'I' - 65] != 0) 110 { 111 tempNum = zidian[(int)'I' - 65]; 112 zidian[(int)'I' - 65] = 0; 113 zidian[(int)'N' - 65] -= 2 * tempNum; 114 zidian[(int)'E' - 65] -= tempNum; 115 number[4] = tempNum; 116 } 117 //转化为字符串输出(保证最小) 118 string sum; 119 for (int i = 0; i < 10; i++) 120 { 121 string temps(number[i],(char)(i+48)); 122 sum += temps; 123 } 124 cout << sum << endl; 125 } 126 return 0; 127 }
C++ Code
转载于:https://www.cnblogs.com/zdtiio/p/5938889.html
小米面试题:手机分身,电话号码隐藏。相关推荐
- miui系统分身测试软件,【MIUI 8评测】手机分身初上手,黑科技值爆表!
原标题:[MIUI 8评测]手机分身初上手,黑科技值爆表! 哈!哈!哈!昨天应用双开的评测你们看的还爽吗!今天我又来发"手机分身"了,四不四很期待! 实际体验了手机分身功能后,有那 ...
- 如何调换手机桌面位置_教大家桌面手机分身图标不见了怎么办
近日有关于桌面手机分身图标不见了怎么办的问题受到了很多网友们的关注,大多数网友都想要知道桌面手机分身图标不见了怎么办的具体情况,那么关于到桌面手机分身图标不见了怎么办的相关信息,小编也是在网上进行了一 ...
- 极少有人知道的手机4大隐藏功能
极少有人知道的手机4大隐藏功能 v1.隐形的备用电池(手机使用小秘诀,让你的手机永远有电!!! ) 你的手机电量不足了,为了让它能够继续使用,按*3370#键,手机会重新启动,启动完毕 后,你就会发现 ...
- vivo计算机的隐藏功能介绍,vivo手机有哪些隐藏功能?这6个功能实在太好用了,要悄悄用起来...
不少年轻人在选择手机的时候,会选择vivo手机,为什么vivo手机那么受年轻人的喜欢和欢迎呢?大概是因为vivo手机拥有很多好用的隐藏的功能. 那么vivo手机有哪些隐藏功能呢?别急,今天小编给大家带 ...
- onenetsim定位功能吗_经常玩手机的抓紧看看,原来手机键盘还隐藏4个实用功能,真实用...
可爱的人都关注我了,就差你了 1 在日常生活中,大家对手机的依赖性越来越大,不管走到哪,时时刻刻都拿着手机发信息.可是,用了这么久的手机,你真的会用手机键盘吗?你知道手机键盘上隐藏的小功能吗?手机键盘 ...
- 手机上图片信息怎么拉一个矩形框_华为手机EMUI系统隐藏的10个功能,上手体验后,实用性无敌了...
阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都有分享,完全是免费订阅,请放心关注. 注:本文转载自网络,如有侵 ...
- 华为手机媒体音量自动静音_华为手机音量键隐藏着四个功能,80%的人只知道第一个!...
大家好,学霸君又来了. 上次学霸君说要教大家掌握#华为#的隐藏功能,第一个就先介绍了"指关节操作",没看过的朋友可以回去看一下. 但是评论区却有很多小伙伴说他们用不到的这个功能,甚 ...
- app 侧边栏 html,响应式手机App样式隐藏侧边栏特效插件
Slidebars是一款简单实用的手机App样式隐藏侧边栏特效jQuery插件.该侧边栏插件十分小巧,仅需1555字节的js文件和600字节的css文件.它使用CSS3动画来制作过渡效果,在不支持的浏 ...
- 手机html怎样取消,手机怎么取消wifi隐藏_手机如何取消隐藏wifi?-192路由网
隐藏wifi信号,实际上对于增强wifi安全性,避免wifi被蹭网并没有什么用处. 所以,很多设置了隐藏wifi的用户,后面都想取消隐藏wifi的设置.所以,这篇文章,将详细的介绍,如何用手机来取消隐 ...
最新文章
- 基于Struts2的供求信息网设计(一)
- mysql创建表关联_MySQL创建高级联表教程
- 七0二所与江南计算机研究所,江南大学:一所被低估的“211”大学,2个A+学科,丝毫不输985...
- java clone数组_Java中的数组有对应的类么,为什么数组可以直接调用clone()方法?...
- 爬虫:requests BeautifulSoup 实战案例
- ZUC密码算法 - Python实现
- 乘积最大python
- 我的python初学练习
- MVC3中_ViewStart.cshtml的一些事
- 腾讯android web,Android 使用腾讯TBS
- 【Fluent TUI】如何开启TUI命令的智能提示,如何搜索不知道的TUI命令;代码智能提示、code hinting、command prompt
- C++主函数简要介绍
- 三观不合,究竟是哪三观?
- 【Maven】无法下载私服 SNAPSHOT 版本 jar 包
- 2.20 货币兑换-设置流程
- linux桌面动态,ubuntu 中设置动态壁纸
- 达实智能中标2.1亿元数据中心项目;中芯集成科创板首发过会拟募125亿;福瑞泰克完成近亿美金B轮融资 | 每日大事件...
- 《计算机视觉之三维重建》笔记3-单视几何
- 自学STC32G12K128单片机总结——1.点灯
- html手机页面选项卡,移动端网页纯原生js选项卡tab切换