2015届华为校园招聘机试题二

#include<iostream>
#include<string>
#include<map>
#include<vector>
using namespace std;
/* 
输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:
描述:      拼音        yi  er  san  si  wu  liu  qi  ba  jiu
      阿拉伯数字        1   2   3      4   5    6    7   8   9
输入字符只包含小写字母,所有字符都可以正好匹配

运行时间限制:无限制
内存限制:       无限制
输入:              一行字符串,长度小于1000
输出:              一行字符(数字)串
样例输入:       yiersansi
样例输出:       1234
*/
vector<char> Translation( char * InPutStr){
	map<char,char> Dic;
	vector<char>OutPut_C;
	Dic['y']='1';
	Dic['e']='2';
	Dic['w']='5';
	Dic['l']='6';
	Dic['q']='7';
	Dic['b']='8';
	Dic['j']='9';
	char *p=InPutStr;
	while(*p!='\0'&&*p!=NULL){
		if(*p=='y'||*p=='e'||*p=='w'|*p=='q'||*p=='b'||*p=='l'||*p=='j'){
			if(*p=='l'||*p=='j'){
				OutPut_C.push_back(Dic[*p]);
			    p+=3;
			}
			else{
			    OutPut_C.push_back(Dic[*p]);
			    p+=2;
			}
		}
		else if(*p=='s'){
			p++;
			if(*p=='i'){
				OutPut_C.push_back('4');
				p++;
			}
			else{
				OutPut_C.push_back('3');
				p+=2;
			}
		}
	}
	return OutPut_C;
}

int main(){
	char *InPutStr="wueryisanyisi";
	vector<char>out=Translation(InPutStr);
	int k=0;
	while(k<out.size()){
		cout<<out[k];
		k++;
	}
	return 0;
}

点赞