算法竞赛入门例题3.2
来源:互联网 发布:360数据恢复软件比较差 编辑:程序博客网 时间:2024/06/07 17:11
题目 错位字符串
把手放在键盘上时,稍不注意就会往右错一位。这样的话,Q会变成W,J会变成K等,输入一个错位后敲出的字符串,输出打字员本来想打出的句子。
样例输入:O S, GOMR YPFSU
样例输出:I AM FINE TODAY
emmm,之前自己的思路是最简单粗暴,也是最麻烦的那一种,就是把输入进去的字符跟要输出的字符一一对应起来。。。然而,对比了一下书上的解法,觉得书上的思路应该好好借鉴。
如果要简化解法,那么首先面临的问题是,输入一串字符之后,如何找到对应的正确的字符?
对于这个问题,我一开始的想法是建立两个字符串,把输入的所有字符存进一个字符串当中,而在另外一个字符串当中找到对应的字符,然后输出前一个,但就是怎么把输入的字符串当中的字符读取出来跟另一个字符串进行比较。。这个语句我不知道怎么写(然后就去用那个最简单粗暴的解法了。。。。)
实际上,为什么要建立第一个字符串组,给自己找麻烦呢?(没错,我就是没事儿找事,太闲了),仔细想一下就知道,在这样的问题当中,把第一个字符串专门存储起来是没有什么意义的,完全可以一边输入一边进行比较以及输出。如果是这样的话,那上面的问题就不存在了。
这也是书上的思路。
另外,值得借鉴的写法就是,for语句,直接写完了在后面写上分号,(因为只要找到与c相等的s[i]就好,不需要输出,直接往下进行判断即可,以后类似的情况也可以这样来写)
代码如下:
#include<stdio.h>
#include<string.h>
char s[]="`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./";
int main()
{
int c,i;
while ((c=getchar())!=EOF)
{
for(i=1;s[i]&&s[i]!=c;i++);
if(s[i])
putchar(s[i-1]);
else
putchar(c);
}
return 0;
}
- 算法竞赛入门例题3.2
- 算法竞赛入门经典 例题9-1
- 算法竞赛入门经典 例题8-1
- 算法竞赛入门经典 例题 9-4
- 算法竞赛入门经典例题-勇者斗恶龙
- 算法竞赛入门经典例题-蚂蚁
- 算法入门竞赛 第五章例题 题解
- 算法竞赛入门经典 例题7-1 最优程序
- 算法竞赛入门经典 例题7-2 埃及分数
- 算法竞赛入门 例题7-1 最优程序
- 算法竞赛入门经典 例题7-3 倒水问题
- 算法竞赛入门经典 例题9-5 0-1 背包
- 算法竞赛入门经典 例题 9-2 嵌套矩形
- 算法竞赛入门经典 例题9-3 硬币问题
- 算法竞赛入门经典 例题4-2孪生素数
- 算法竞赛入门 例题3-2 蛇形填数P35
- 算法竞赛入门经典7.5.1例题1最优程序
- 算法竞赛入门经典 例题 3-1 开灯问题
- hdu 5573 Binary Tree(传说中的构造)
- 安卓flex
- 2017七月、八月暑假集训总结
- 08.js.for循环
- Linq及Lamda表达式应用经验之 GroupBy 分组
- 算法竞赛入门例题3.2
- [Linux] Shell 中 $ 作用
- 6.0权限动态适配(一)(存在问题)
- 反省
- webmagic使用总结
- sqlplus 汉字乱码问题的解决——windows
- HDU1814 Peaceful Commission —— 2-sat 染色法
- HDU1576 A/B (扩展欧几里得求逆元)
- 2017.08.25【NOIP提高组】模拟赛A组