题解 | 手机键盘

手机键盘

https://www.nowcoder.com/practice/20082c12f1ec43b29cd27c805cd476cd

#include <iostream>
#include <map>
#include <vector>

using namespace std;

const int waitTime = 2;
const int keyTime = 1;

int getTime(map<char, pair<int, int>>& keyMap, vector<char> charArray) {
	int sum = 0;
	int lastKey = -1;
	for (auto it = charArray.begin(); it != charArray.end(); it++)
	{
		pair<int, int> curChar = keyMap[*it];
		if (curChar.first == lastKey)
		{
			sum += waitTime;
		}
		sum = sum + curChar.second * keyTime;
		lastKey = curChar.first;
	}
	return sum;
}

int main() {
	// 初始化键盘映射

	map<char, pair<int, int>> keyMap = {
		{'a', {2,1}}, {'b', {2,2}}, {'c', {2,3}},
		{'d', {3,1}}, {'e', {3,2}}, {'f', {3,3}},
		{'g', {4,1}}, {'h', {4,2}}, {'i', {4,3}},
		{'j', {5,1}}, {'k', {5,2}}, {'l', {5,3}},
		{'m', {6,1}}, {'n', {6,2}}, {'o', {6,3}},
		{'p', {7,1}}, {'q', {7,2}}, {'r', {7,3}}, {'s', {7,4}},
		{'t', {8,1}}, {'u', {8,2}}, {'v', {8,3}},
		{'w', {9,1}}, {'x', {9,2}}, {'y', {9,3}}, {'z',{9,4}}
	}; 
	// 处理输入
	string str;
	while (cin >> str) {
		vector<char> charArray(str.begin(), str.end()); 
		charArray.push_back('\0'); 
		cout << getTime(keyMap, charArray) << endl;
	}
	
	return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
练习JAVA时长两年半:qps 30000
点赞 评论 收藏
分享
04-02 12:26
已编辑
中南大学 PHP
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务