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....

