经典算法题之手机键盘

发布时间 2024-01-06 20:39:22作者: 神奇的萝卜丝

这题出的只能说是无语。思路还是很简单的。

只要用一个的tag标记上次是哪个按键即可,然后tag和现在对比,要是相同就多加2。

#include<iostream>
#include <map>
using namespace std;
int main(){
    map<char,int>Map={
            {'a',10},{'b',20},{'c',30},
            {'d',11},{'e',21},{'f',31},
            {'g',12},{'h',22},{'i',32},
            {'j',13},{'k',23},{'l',33},
            {'m',14},{'n',24},{'o',34},
            {'p',15},{'q',25},{'r',35},{'s',45},
            {'t',16},{'u',26},{'v',36},
            {'w',17},{'x',27},{'y',37},{'z',47}
    };
    char c[101]={'\0'};
    while( cin >> c ) {
        int tag = -1 ;
        int i = 0 ;
        int sum = 0 ;
        while( c[i] != '\0' ) {
            int x = Map[ c[i] ] / 10;
            int y = Map[ c[i] ] % 10;
            sum += x;
            if (tag == y) {
                sum += 2;
            }
            tag=y;
            i++;
        }
        cout << sum <<'\n' ;
    }
    return 0;
}

结果如下: