题解 | #手机键盘#

手机键盘

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

#include<bits/stdc++.h>
using namespace std;

int calculateTime(string str)
{
	//定义字母对应的按键位置{按键,{位置,按键次数}}
	unordered_map<char,pair<int,int>> keyboard={
		{'a',{1,1}},{'b',{1,2}},{'c',{1,3}},
		{'d',{2,1}},{'e',{2,2}},{'f',{2,3}},
		{'g',{3,1}},{'h',{3,2}},{'i',{3,3}},
		{'j',{4,1}},{'k',{4,2}},{'l',{4,3}},
		{'m',{5,1}},{'n',{5,2}},{'o',{5,3}},
		{'p',{6,1}},{'q',{6,2}},{'r',{6,3}},{'s',{6,4}},
		{'t',{7,1}},{'u',{7,2}},{'v',{7,3}},
		{'w',{8,1}},{'x',{8,2}},{'y',{8,3}},{'z',{8,4}}
	};
	int time=0;//记录按键次数 
	int prev_position=0;//记录上一个按键 
	for(char c:str)
	{
		int position=keyboard[c].first;//记录当前字母在哪个键上 
		if(position==prev_position)//如果跟上一个字母在同一个键上,则需要等待 
		{
			time+=2;
		}
		prev_position=keyboard[c].first;//记录当前按键 
		time+=keyboard[c].second;//加上按键次数 
	}
	return time;
}
int main()
{
	string input;
	while(cin>>input)
	{
		cout<<calculateTime(input)<<endl;
	}
}

全部评论

相关推荐

joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务