九宫格按键输入法(华为机试)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
vector<string> re{ {" "},{",."},{"abc"},{"def"},{"ghi"},{"jkl"},{"mno"},{"pqrs"},{"tuv"},{"wxyz"} };
void op(string str) {
	bool flag = false;//代表数字模式
	int p = 0;
	while (p < str.size()) {
		string temp;
		//分离数字
		while (str[p] <= '9' && str[p] >= '0' && p < str.size()) {
			temp.push_back(str[p]);
			++p;
		}
		//不同模式的处理,flag为0代表默认模式,
		if (flag) {
			int slow = 0;
			int fast = 0;
			while (fast < temp.size()) {
				int cnt =0;
				int index = temp[slow] - '0';
				while (temp[fast] == temp[slow] && fast < temp.size()) {
					++cnt;
					++fast;
				}
				slow = fast;
				if (cnt < re[index].size())
				{
					cout << re[index][cnt - 1];
				}
				else {
					cout << re[index][0];
				}
			}	
		}		
		else {
			for (char ch : temp) {
				cout << ch - '0' ;
			}
		}
		if (str[p] == '#') {
			flag = flag ? false : true;
		}
			++p;
	}

}
//#222235/56
///56123#222235/56
int main() {
	string str;
	getline(cin, str);
	op(str);
}
posted @   chunbai11  阅读(266)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示