一、链接
1260 Completed String
二、题目
题目描述
给一个字符串,请判断字符串是否出现了所有的英文字母(不区分大小写)。
输入
每行一个只含英文字母的字符串,长度不超过1000。
输出
每行输出一个样例的结果,如果出现了所有的字符串,输出“Yes”,否则输出“No”。(不需要输出引号)
样例输入
ProgrammingPratice TheQuickBrownFoxJumpsOverLazyDog
样例输出
No Yes
提示
巨大的输入量,请使用C风格的输入
三、题意
判断字符串是否出现了所有字母,如果出现了就输出yes,否则输出no
四、代码
c++代码
#include<iostream>using namespace std;char op[1000+10];
int a[1000];int main()
{while(~scanf("%s",op)){for(int i=0;i<1010;i++){if(op[i]>=65&&op[i]<=90) op[i]+=32;if(op[i]>=97&&op[i]<=122) {int num=op[i];a[num]++;}}bool flag=false;for(int i=97;i<=122;i++){if(a[i]==0) {printf("No\n");//printf("%d\n",i);flag=true;break;}}if(flag==false) printf("Yes\n");for(int i=97;i<=122;i++) a[i]=0;}return 0;
}
c语言代码
#include<stdio.h>
#include<stdbool.h>char op[1000+10];int a[200];int main()
{while(~scanf("%s",op)){for(int i=0;i<1010;i++) {if(op[i]>=65&&op[i]<=90) op[i]+=32;if(op[i]>=97&&op[i]<=122) {int temp=op[i];a[temp]++;}}bool flag=false;for(int i=97;i<=122;i++){if(a[i]==0){flag=true;printf("No\n");break;}}if(flag==false) printf("Yes\n");for(int i=97;i<=122;i++) a[i]=0;}return 0;
}
五、总结
1.一直输入就使用这一行代码,如果不加~会出现Output Limit Exceed
while(~scanf("%s",op))
2.把所有大写字母转换成小写字母,遍历字符串找到了小写字母,就把小写字母作为下标的另一个数组的值增加一
3.遍历小写字母作为下标的数组元素,如果有一个数组元素的数值是0,就表示没有用到所有字母,就输出no,并且做一下标记
4.把小写字母作为下标的数组元素重置为零
5.这个道题目还是比较简单,主要难点就是建立数组下标和数组元素之间的关系,数组下标表示小写字母的ASCII码数值,数组元素的数值大于等于1,就表示出现了这个字母
六、精美图片