Uva 10082 关于手残敲键盘还不肯删掉重打的这件事

紫书P47 例题3-2

一、题意

输入一段字符串,是手在键盘向右移了一个后的输出结果,要求输出原字符串。

二、解析

用const字符串存放会输入/出的所有字符,然后边输入边找原来的字符(即前一个)进行输出

三、代码

#include <iostream>
#include <string>
using namespace std;
const string str = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";

int main() {
    char ch;
    while((ch = getchar()) != EOF) {
        int idx = str.find(ch);
        if(idx != str.npos) putchar(str[idx - 1]);
        else putchar(ch);
    }
}

/*
O S, GOMR YPFSU/
*/

四、归纳

  • 学会用const存放常量的方式
  • 通过str.find(ch, start_pos)来从一个字符串中获取某个字符第一次出现的位置,注意如果找不到返回的是 str.npos, 不是str.size()

加油吧

Re:从零开始的刷题生活 文章被收录于专栏

一起来重刷题叭~ 由于精力有限,题意只说大概,题目细节可以点击vjudge链接查看。 题目以紫薯中的Uva例题/习题为主,有时候有些比较经典的算法也会特意从其它OJ上找题,并不一定出现在紫薯上。 噢,紫薯指——《算法竞赛入门经典(第2版)》by 刘汝佳 喜欢的小伙伴点个赞呗?不然我只能认为一直只有我一个人在自娱自乐orz....

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务