机试题之手机键盘

#include<iostream>
#include<map>
#include<string>
using namespace std;

class letter {
public:
	letter(){}
	letter(char r, int p, int t) {
		value = r;
		position = p;
		time = t;
	}
	char value;
	int position;
	int time;
};

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

	string s1;
	while (cin>>s1) {
		int time = 0;
		int len = s1.size();

		for (int ii = 0; ii < len; ii++) {
			char aa = s1[ii];

			if (ii > 0) {
				char bb = s1[ii - 1];
				if (mmap[aa].position == mmap[bb].position)
					time += 2;
			}
			time += mmap[aa].time;
			
		}

		cout << time << endl;
	}

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值