洛谷刷题C++语言 | P1765 手机

学习C++从娃娃抓起!记录下洛谷C++学习和备考过程中的题目,记录每一个瞬间。

附上汇总贴:洛谷刷题C++语言 | 汇总_热爱编程的通信人的博客-CSDN博客


【题目描述】

一般的手机的键盘是这样的:

要按出英文字母就必须要按数字键多下。例如要按出 x 就得按 9 两下,第一下会出 w,而第二下会把 w 变成 x。0 键按一下会出一个空格。

你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。

【输入】

一行句子,只包含英文小写字母和空格,且不超过 200 个字符。

【输出】

一行一个整数,表示按键盘的总次数。

【输入样例】

i have a dream

【输出样例】

23

【代码详解】

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

int main()
{
    string s;
    int ans=0, m[300], mark=1;
    getline(cin, s);
    //对m进行赋值
    for (int i='a'; i<='r'; i++) {
        m[i] = mark;
        mark++;
        if (mark == 4) mark = 1;
    }
    m['s'] = 4;
    m['z'] = 4;
    m[' '] = 1;
    mark = 1;
    for (int i='t'; i<='y'; i++) {
        m[i] = mark;
        mark++;
        if (mark == 4) mark = 1;
    }
    //遍历字符串,将每个字符串对应的数值相加
    for (int i=0; i<s.length(); i++) {
        ans += m[s[i]];
    }
    cout << ans;
    return 0;
}

【运行结果】

i have a dream
23

猜你喜欢

转载自blog.csdn.net/guolianggsta/article/details/132713979