拼音翻译成阿拉伯数字

输入一串拼音,输出它代表的阿拉伯数字(Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu),数字不会超过十万

为了处理方便。输入一定是数字带单位的,比如10会是YiShi,而不是一个单独的Shi.

输入 JiuWanJiuQianJiuBaiJiuShiJiu

输出 99999

基本思路:把Wan,Qian,Bai。Shi特殊处理,作为分隔符,其余的都是普通数字

#include<stdio.h>
#include<string>
#include<cctype>
#include<map>
#include<iostream>
#include<vector>
using namespace std;
map<string,int>mm;
vector<int>vec;
vector<int>nums;
void init()
{
    mm["Ling"]=0;
    mm["Yi"]=1;
    mm["Er"]=2;
    mm["San"]=3;
    mm["Si"]=4;
    mm["Wu"]=5;
    mm["Liu"]=6;
    mm["Qi"]=7;
    mm["Ba"]=8;
    mm["Jiu"]=9;
    mm["Wan"]=10000;
    mm["Qian"]=1000;
    mm["Bai"]=100;
    mm["Shi"]=10;
}
int main(int argc, char *argv[])
{
    freopen("test.in","r",stdin);
    init();
    string s;
    while(cin>>s){
        nums.clear();
        vec.clear();
        int i=0;
        int j;
        while(1){
            if(i<s.size()&&isupper(s[i]))
            {
                j=i;
                i++;
                while(i<s.size()&&islower(s[i]))
                    ++i;
                string x;
                for(int k=j;k<i;++k)
                    x+=s[k];
                vec.push_back(mm[x]);
            }
            if(i==s.size())break;
        }
        int num=0;
        vector<int>::size_type ite=0;
        while(ite!=vec.size()){
            if(vec[ite]>=10){
                num*=vec[ite];
                nums.push_back(num);
                num=0;
            }
            else
                num+=vec[ite];
            ite++;
        }
        nums.push_back(num);
        int sum=0;
        for(int i=0;i<nums.size();++i)
            sum+=nums[i];
        cout<<sum<<endl;
    }
    return 0;
}

測试用例:

BaBaiBaShiBa

JiuWanJiuQianJiuBaiJiuShiJiu

YiShi

结果为:

时间: 2024-08-04 19:09:23

拼音翻译成阿拉伯数字的相关文章

华为机试—拼音翻译成阿拉伯数字(有Wan,Qian,Bai,Shi单位)

题目:拼音翻译成阿拉伯数字 输入一串拼音,输出它代表的阿拉伯数字(Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu),数字不会超过十万 为了处理方便,输入一定是数字带单位的,例如10会是YiShi,而不是一个单独的Shi. 输入 JiuWanJiuQianJiuBaiJiuShiJiu 输出 99999 基本思路: 遍历找到下一个大写字母,截取子串,比较匹配,重要的是处理最后一位是数字还是单位. #include <iostream> #include <string

华为机试—拼音翻译成阿拉伯数字(只有数字拼音)

题目:拼音翻译成阿拉伯数字(只有数字拼音) 输入一串拼音,输出它代表的阿拉伯数字(Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu),数字不会超过十万 为了处理方便,输入一定是只有数字拼音的,没有其他的单词或者字符. 输入:JiuBaWuSi 输出:9854 基本思路: 可以看出拼音最短为2个字符,最长为4个字符. 两位开始扫,没有,扫三位,三位没有扫四位,二位三位四位都没有,则从下一位开始扫. #include <string> #include <iostream

如何可以将PDF文件在线翻译成中文?

有时心血来潮,会在网上搜索一些专业的影评.杂志等资料,像这些资料格式PDF的多一些,而且有时还会看到纯英文版的,这样想利用起来,就必须要使用一些工具的帮助,就可以轻松的完成翻译的任务,让我们使用起来更轻松.不用下载,直接在网页上面就可以完成,非常的方便,一起来学习一下吧.     在线PDF翻译,可以直接把PDF.Word翻译成中文.英文.繁体中文等多国语言的文档.用户可自定义目标语言,翻译后的文档可以精确保留原文件的所有页面元素和排版.用户可以在短时间之内下载到转换之后的文件.只要用户可以连接

【随便扯扯】Standby到底翻译成备用还是待机?

最近在翻译VMware VSAN的一本书,术语用词我以官方中文版客户端软件为准.可是,问题出现了,同一个英文表述在不同的中文版客户端软件中,甚至同一个客户端软件中都翻译的不一样. 比如Standby到底应该翻译成备用还是待机?     Web Client英文版里面是这样的:     到了中文版中同样的界面,3个Standby居然在一个页面里面就有2个不同的翻译了. 让我们再到中文版vSphere Client中去看看:    vSwitch配置过程中的Standby Adapter翻译为待机适

把Scheme翻译成Java和C++的工具

一.为什么要写这个工具? 公司内容有多个项目需要同一个功能,而这些项目中,有的是用Java的,有的是用C++的,同时由于某些现实条件限制,无法所有项目都调用统一的服务接口(如:可能运行在无网络的情况下),所以可选方案有两种: a.分别用Java和C++实现两套一样的功能. b.实现一个生成工具,用来生成同一种逻辑的Java和C++代码. …… 二.本文不会有的内容 我不希望在一篇技术文章中涉及到任何业务,以及为避免任何形式的公司敏感信息的泄露,所以本文中不会出现这个工具中的关键代码,即: a.这

C++程序翻译成C程序

C++刚出现的时候,C++程序是需要先被翻译成C程序后由C编译器编译才能运行的. 考虑翻译如下C++程序: class CCar { public: int price; void SetPrice(int p); }; void CCar::SetPrice(int p) { price = p; } int main() { CCar car; car.SetPrice(20); return 0; } 1)C中没有class 这种数据类型,需要使用struct来代替.int price;

将给定序列翻译成蛋白质序列

利用 dictionary 可以将给定的cDNA序列翻译成蛋白序列 1 #!/bin/python 2 # Dictionary protein translation 3 4 my_dna = open("/home/maque/my_dna.txt").read().replace('\n', '') # 利用 str.replace() method 将 '\n' 去掉,这样 my_dna 就是一条单一的字符串 5 6 condon_table = {"TTT"

整数翻译成英文

1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 class robot{ 6 string name; 7 string type; //型号 8 public: 9 robot(string name = "xxx",string type = "xxx") : name(name),type(type){ //默认构造函数 10 } 11 void ou

jsp原来最终也要翻译成class文件

原来当一个请求访问jsp页面时,由web服务器将jsp翻译成servlet的java文件,再由编译器编译成class文件,最后由解释器执行: jsp>>java文件>>class文件,jsp的class文件在tomcat中D:\Program Files\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\项目名\org\apache\jsp文件夹下