华为机试:输入法查找
来源:互联网 发布:php 获取对象类型 编辑:程序博客网 时间:2024/06/05 12:04
#include <iostream>#include <map>#include <vector>#include <string>#include <algorithm>using namespace std;/* 把输入的每一行的编码解析为拼音和汉字 */void parse_raw(string &str, string &hanzi, string &pinyin){const char *p = str.c_str();const char *q = p;while (*q != '_')q++;// note [) 范围是前开后闭string _hanzi(p, q);string _pinyin(q + 1, p + str.size());hanzi = _hanzi;pinyin = _pinyin;}/* 把输入的拼音解析为拼音和数字 */void parse_input(string &str, string &pinyin, int &nums){const char *p = str.c_str();const char *q = p;while (*q != '\0' && !('0' <= *q && *q <= '9'))q++;string _pinyin(p, q);pinyin = _pinyin;if ('0' <= *q && *q <= '9')nums = *q - '0';elsenums = 0;}int main(){map<string, vector<string> > ssmap;string str_raw; /* 定义常量 */const string tag_start = "Code";const string tag_search = "Search";const string tag_end = "End";string hanzi, pinyin;int num;cin >> str_raw; /* 等于开始信号 */if (str_raw == tag_start){ /* 读取编码表 */cin >> str_raw;while (str_raw != tag_search){parse_raw(str_raw, hanzi, pinyin);ssmap[pinyin].push_back(hanzi);cin >> str_raw;} /* 输入的search */cin >> str_raw;/* 解析输入的拼音 */parse_input(str_raw, pinyin, num);cin >> str_raw;/* 结束标志位 */if (str_raw == tag_end){ /* 判断 这个拼音是否存在*/if (ssmap.find(pinyin) == ssmap.end()){cout << "Erro" << endl;}else if (num > 0){ /* 判断num是否存在 */ if(num < ssmap[pinyin].size()) { cout << ssmap[pinyin][num - 1] << endl; } else { cout << "Erro" << endl; }}else{ /* 输出前5个 */size_t i = 0;for ( i = 0; i < ssmap[pinyin].size() - 1 && i != 4; i++)cout << ssmap[pinyin][i] << ";";cout << ssmap[pinyin][i] << endl;}}}return 0;}
0 0
- 华为机试:输入法查找
- 华为机试:查找字符串
- 华为机试---查找兄弟单词
- 华为机试-查找兄弟单词
- 输入法查找
- 【华为机试题】字符串查找
- 华为机试——查找子字符串个数
- 华为机试—查找子串个数
- [华为机试练习题]58.查找同构数的数量
- 华为机试 单词查找、排序、去重
- 华为机试——查找兄弟单词
- 华为机试——查找子字符串个数
- 【华为机试】字串的连接最长路径查找
- Android 输入法问题 解决三星s5830i或华为低端机输入法崩溃问题
- 输入法查找—JAVA
- 华为机试——查找字符串中空格分割的单词的最大长度
- 华为机试——查找组成一个偶数最接近的两个素数
- 华为机试---查找两个字符串a,b中的最长公共子串
- 项目管理小知识
- ios隐藏顶部状态和修改顶部状态栏字体颜色
- 23个经典的面向对象的设计模式与泡妞大法
- makeinfo is missing on your system
- ZOJ 3905 Cake(dp)
- 华为机试:输入法查找
- Spark 之Streaming--实例
- 黑马程序员——API中的小总结
- operator重载运算符(一)
- Tomcat内存设置详解
- 计算机网络笔记-TCP层
- SVN上传iOS @2x或@3x的图片时报svn E200009 Could not add all targets because some targets don't exist
- iOS学习之---个人总结C语言自学建议!
- 学习 JavaScript 应具备的6 个思维技巧