华为机试—拼音翻译成阿拉伯数字(只有数字拼音)
2014-12-24 09:55
1496 查看
题目:拼音翻译成阿拉伯数字(只有数字拼音)
输入一串拼音,输出它代表的阿拉伯数字(Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu),数字不会超过十万
为了处理方便,输入一定是只有数字拼音的,没有其他的单词或者字符。
输入:JiuBaWuSi
输出:9854
基本思路:
可以看出拼音最短为2个字符,最长为4个字符。
两位开始扫,没有,扫三位,三位没有扫四位,二位三位四位都没有,则从下一位开始扫。
测试结果,可能不周全,欢迎查漏补缺
输入一串拼音,输出它代表的阿拉伯数字(Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu),数字不会超过十万
为了处理方便,输入一定是只有数字拼音的,没有其他的单词或者字符。
输入:JiuBaWuSi
输出:9854
基本思路:
可以看出拼音最短为2个字符,最长为4个字符。
两位开始扫,没有,扫三位,三位没有扫四位,二位三位四位都没有,则从下一位开始扫。
#include <string> #include <iostream> using namespace std; void filter(string str) { //各字符串的下标即为其对应的阿拉伯数字 char *ch[]={"Ling","Yi","Er","San","Si","Wu","Liu","Qi","Ba","Jiu"}; int i,j,k,len; string substr; len=str.length(); for(i=0;i<len;i++) { //可以看出拼音最短为2个字符,最长为4个字符 for(j=i+1;j<len&&(j-i)<4;j++) { substr=str.substr(i,j-i+1); for(k=0;k<10;k++) if(!substr.compare(ch[k])) { printf("%d",k);//相等则打印出数字 break; } } } printf("\n"); } int main() { string str; while(cin>>str){ //cin>>str; filter(str); } return 0; }
测试结果,可能不周全,欢迎查漏补缺
相关文章推荐
- 华为机试—拼音翻译成阿拉伯数字(有Wan,Qian,Bai,Shi单位)
- 华为机试-拼音翻译成阿拉伯数字
- 拼音翻译成阿拉伯数字_华为SO挑战赛2015年8月
- 每天一道算法题——拼音翻译成阿拉伯数字(只有数字拼音)
- 拼音翻译成阿拉伯数字
- 每天一道算法题——拼音翻译成阿拉伯数字(有Wan,Qian,Bai,Shi单位)
- 拼音翻译成阿拉伯数字
- 数字拼音翻译成阿拉伯数字
- 拼音翻译成阿拉伯数字
- 华为机试:中文整数读法的拼音转数字
- 拼音翻译为阿拉伯数字
- [华为机试练习题]43.在字符串中找出连续最长的数字串
- 华为机试题目:识别字符串中的整数并转换为数字形式
- 华为机试—输出一个数字各个位数和
- 华为机试——找出数组中不同的数字
- 华为机试——识别字符串中的整数并转换成数字形式
- Java - 华为机试训练 - 数字颠倒
- 趣味程序(将阿拉伯数字翻译为罗马数字)
- 英文数字写法翻译阿拉伯数字 [java实现]
- 华为机试—物品放箩筐(只有体积)