pat-bl-1029
来源:互联网 发布:ps10.0官方软件下载 编辑:程序博客网 时间:2024/06/10 19:32
pat-bl-1029
2017-01-20
- 字符串遍历&比较
- 坑点:最后一个测试点的坏键在最后,如果循环的跳出条件写的有问题(比如以遍历完字符串2为结束)就会出错
/** * pat-bl-1029 * 2017-01-20 * C version */#include<stdio.h>#include<string.h>int main(){ freopen("in.txt", "r", stdin); char str1[100], str2[100]; int alp[26] = {0}, num[10] = {0}, _flag = 0;//分别是字母、数字和下划线是否坏掉的标志 scanf("%s", str1); scanf("%s", str2); // printf("strlen(str1) = %lu\n", strlen(str1)); // char test1 = 'a', test2 = 'A'; // printf("a: %d, A: %d\n", test1, test2); //把两个字符串中的小写都变成大写字母 for(int i = 0;i < strlen(str1);i++) { if(str1[i] <= 'z' && str1[i] >= 'a') { str1[i] -= 32; } } for(int i = 0;i < strlen(str2);i++) { if(str2[i] <= 'z' && str2[i] >= 'a') { str2[i] -= 32; } } //printf("str1 = %s, str2 = %s\n", str1, str2); //遍历字符串1,和字符串2的当前字符比较,如果相等,两个当前位置都后移,继续比较;否则输出该坏键 //注意循环控制条件应该是字符串1是否结束而非字符串2,不然会导致在字符串末尾的坏键没有被判断 int j = 0; for(int i = 0, j = 0;i < strlen(str1);i++) { if(str1[i] == str2[j] && j < strlen(str2)) { j++; } else { if(str1[i] <= '9' && str1[i] >= '0') { if(num[str1[i] - '0'] == 0)//该坏键第一次出现,输出坏键,并置标志位为1 { printf("%c", str1[i]); num[str1[i] - '0'] = 1; } } else if(str1[i] == '_') { if(_flag == 0) { printf("_"); _flag = 1; } } else if(str1[i] <= 'Z' && str1[i] >= 'A') { if(alp[str1[i] - 'A'] == 0) { printf("%c", str1[i]); alp[str1[i] - 'A'] = 1; } } }//else end } putchar('\n');}
-FIN-
0 0
- pat-bl-1029
- PAT (BL) 1001
- PAT-BL-1011
- PAT-BL-1007
- PAT-BL-1008
- pat-bl-1009
- pat-bl-1012
- pat-bl-1010
- pat-bl-1013
- pat-bl-1014
- pat-bl-1015
- pat-bl-1016
- pat-bl-1020
- pat-bl-1021
- pat-bl-1022
- pat-bl-1023
- pat-bl-1024
- pat-bl-1025
- 对象持久化API之JPA入门教程
- DOS CMD
- Java基本概念-ajax
- Centos服务器被挂马的一次抓马经历
- js print
- pat-bl-1029
- POJ 2993-Emag eht htiw Em Pleh(模拟-根据棋子位置还原棋盘)
- YARN与MapReduce的区别
- PAT甲级1038
- JVM垃圾收集器(1)--G1之前GC方法概览
- Java基本概念-jQuery
- jvm理论-class 再重新认识一下class
- Docker命令大全
- Discuz论坛系统搭建