一、链接
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,就表示出现了这个字母
六、精美图片