题解 | #手机键盘#

手机键盘

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

利用两个map映射来找关系
#include<iostream>
#include<map>
using namespace std;

map<char, int> inputTime = {
		{'a',1},{'b',2} ,{'c',3},
		{'d',1},{'e',2} ,{'f',3},
		{'g',1},{'h',2} ,{'i',3},
		{'j',1},{'k',2} ,{'l',3},
		{'m',1},{'n',2} ,{'o',3},
		{'p',1},{'q',2} ,{'r',3},{'s',4},
		{'t',1},{'u',2} ,{'v',3},
		{'w',1},{'x',2} ,{'y',3},{'z',4}
};
map<char, int> keyMap = {
	{'a',2},{'b',2} ,{'c',2},
	{'d',3},{'e',3} ,{'f',3},
	{'g',4},{'h',4} ,{'i',4},
	{'j',5},{'k',5} ,{'l',5},
	{'m',6},{'n',6} ,{'o',6},
	{'p',7},{'q',7} ,{'r',7},{'s',7},
	{'t',8},{'u',8} ,{'v',8},
	{'w',9},{'x',9} ,{'y',9},{'z',9}
};

int main() {
	string input;
	while (cin >> input) {
		int time = 0;
		for (int i = 0; i < input.size(); i++) {
			time += inputTime[input[i]];

		}
		for (int i = 1; i < input.size(); i++) {
			if (keyMap[input[i]] == keyMap[input[i-1]])  //字符与前一个字符相等则加二
			{
				time += 2;
			}


		}
		cout << time << endl;
	}
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务