题目:UVa10082
地址:https://vjudge.net/problem/UVA-10082
题解:
题意很简单,就是由于在键盘上打字,手容易向右错位,所以要你写一个程序,把错位的字符串归位。
思路:
思路也很简单,就是对于所有合法的字符(题目输入时已经保证),输出其左边的那个字符。实现方法有二:一、使用常量字符数组一次性读入所有字符,然后对于每一个输入的字符,在字符数组找出它的位置,输出其左边的那个字符,如果找不到的话,就原样输出。二、建立输入与输出的映照关系的数组(类似于map容器),不过这种方法比较麻烦些。
编程技巧:
① 可以用常量字符数组读入多个字符,无需逗号分隔,也不需要指明数组大小,编译器可以完成计算。
e.g: char ch[] ="`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./";
AC代码:
题目:UVa10082 地址:https://vjudge.net/problem/UVA-10082 题解: 题意很简单,就是由于在键盘上打字,手容易向右错位,所以要你写一个程序,把错位的字符串归位。 思路: 思路也很简单,就是对于所有合法的字符(题目输入时已经保证),输出其左边的那个字符。实现方法有二:一、使用常量字符数组一次性读入所有字符,然后对于每一个输入的字符,在字符数组找出它的位置,输出其左边的那个字符,如果找不到的话,就原样输出。二、建立输入与输出的映照关系的数组(类似于map容器),不过这种方法比较麻烦些。 编程技巧: ① 可以用常量字符数组读入多个字符,无需逗号分隔,也不需要指明数组大小,编译器可以完成计算。 e.g: char ch[] = "`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./"; AC代码: #include<iostream> #include<cstdio> #include<algorithm> #include<cstdlib> #include<string> #include<cstring> #include<vector> #include<stack> using namespace std; char ch[] = "`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./"; ///用常量字符数组一次性全部读入键盘上所有的字符 int main(){ int len = strlen(ch); char c; while((c=getchar())!=EOF){ ///读入字符 int flag = 0; for(int i = 0;i < len;++i){ ///在字符数组中查找此次输入的字符 if(ch[i]==c){ ///找的话,就输出其左边的那个字符 flag = 1; printf("%c",ch[i-1]); break; } } if(!flag) printf("%c",c); ///找不到的话,就原样输出 } return 0; }