PAT(Basic Level) 1033:旧键盘打字(C语言实现)

PAT(Basic Level) 1033:旧键盘打字(C语言实现)

错误分析:运行超时,在循环判断时每次都要运算一次strlen(),当字符串很长时间,运行超时。

注意:题目保证第二个串非空,第一个串可能为空,不能用scanf输入,而用gets输入。

学习:tolower函数,如果字符为大写字符则转换为小写字符,如果是其他字符则不做任何处理。
本题和1029:旧键盘类似

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
	int flag[255]={0},i,m,n;//flag记录哪些按键坏掉(ASCII)
	char c1[50]={0},c2[100001]={0};
	gets(c1);
	gets(c2);
	m=strlen(c1);
	n=strlen(c2);
	for(i=0;i<m;i++)
		flag[tolower(c1[i])]=1;
	for(i=0; i<n; i++)
	{
		if(!flag[tolower(c2[i])])
		{
			if(flag['+'] && isupper(c2[i]))//上键坏掉
				continue;
			putchar(c2[i]);
		}
	}
	return 0;
}
发布了5 篇原创文章 · 获赞 0 · 访问量 26

猜你喜欢

转载自blog.csdn.net/LIve1AnD1LeARN/article/details/105026659
今日推荐