华为机试电话号码翻译C++实现
2015-04-09 21:23
260 查看
输入DoubleTwothree
输出223
输入DoubleDoubleTwo
输出ERROR
不能出现空格逗号数字之类非法字符否则输出ERROR
1Twot3
输出ERROR
输出223
输入DoubleDoubleTwo
输出ERROR
不能出现空格逗号数字之类非法字符否则输出ERROR
1Twot3
输出ERROR
#include<iostream> #include<string> using namespace std; int main() { char *a[11]={"Zero","One","Two","Three","Four","Five","Six","Seven", "Eight","Nine","Double"}; string s1; getline(cin,s1); int length=s1.size(); string substr1; int flag=0; char* out[100]; int m=0; for (int i=0;i<length;i++) { if (s1[i]>122||s1[i]<65||(s1[i]>90&&s1[i]<97)) { cout<<"ERROR"<<endl; return 0; } else { for (int j=i+2;j<length&&(j-i)<6;j++) { substr1=s1.substr(i,j-i+1);//起始位置与截取的长度 if (!substr1.compare(a[10]))//判断double的出现 { if (i==length-6)//如果出现在末尾则错误返回 { cout<<"ERROR"<<endl; return 0; } else { if (flag)//用flag标示double出现的次数,如果不为0则说明出现了第二次 { cout<<"ERROR"<<endl; return 0; } } flag=1;//标示double出现的第一次 } else { for (int k=0;k<10;k++)//判断单词是非double的比较 { if (!substr1.compare(a[k])) { if (flag)//如果double出现了1次则多添加一个改数字 { out[m++]=a[k]; out[m++]=a[k]; flag=0; break; } else { out[m++]=a[k]; break; } } } } } } } for (int p=0;p<m;p++) { for (int q=0;q<10;q++) { if (out[p]==a[q]) { cout<<q; } } } cout<<endl; return 0; }
相关文章推荐
- 华为机试练习---java实现电话号码本
- 内存管理:算法及其c/c++实现 翻译三
- 内存管理:算法及其c/c++实现 翻译五
- 华为招聘机试整理11:实现字符串间隔输出
- [C/C++]2014年7月华为校招机试真题(一)
- 内存管理:算法及其c/c++实现 翻译一
- 华为机试:实现“十七进制”转“十进制”算法
- [C/C++]2014年7月华为校招机试真题(二)
- [C/C++]2014年7月华为校招机试真题(一)
- 电话号码翻译(华为上机试题8_31_3)
- 内存管理:算法及其c/c++实现 翻译六
- Lua Faq翻译之为什么lua中没有类似于+=的操作符以及用Lua实现C++中的<<操作符
- 华为迷宫算法c++完整实现
- 华为招聘机试整理10:实现字符串中子字符串的替换
- C++调用有道翻译API实现在线翻译之发声篇
- 内存管理:算法及其c/c++实现 翻译四
- 电话号码对应的英文单词 手机数字短信翻译小工具 数字输入法初型 需求“ya tou”咋写程序实现翻译成“丫头”,有哪位有思路的请指教。
- 华为机试准备--练习(JAVA实现)
- 华为面试题——约瑟夫问题的C++简单实现(循环链表)
- 华为机试 翻译电话号码