题目描述
给一个字符串,请判断字符串是否出现了所有的英文字母(不区分大小写)。
输入
每行一个只含英文字母的字符串,长度不超过1000。
输出
每行输出一个样例的结果,如果出现了所有的字符串,输出“Yes”,否则输出“No”。(不需要输出引号)
样例输入
ProgrammingPratice
TheQuickBrownFoxJumpsOverLazyDog
样例输出
No
Yes
提示
巨大的输入量,请使用C风格的输入
AC代码1和2只有字母和ASCII码的区别,不过要注意字母与ASCII码在确定大小写字母范围时,不等号两边的取等问题。
AC代码1:
#include<stdio.h>
#include<string.h>
int main()
{
char str[1010];
int arr[27]={0};
while(scanf("%s",str)!=EOF){
int ans=0;
int len=strlen(str);
for(int i=0;i<len;i++){
if(str[i]<='Z'&&str[i]>='A')//此处取等,但是ASCII码有一侧不取等
arr[str[i]-'A']=1;
if(str[i]>='a')
arr[str[i]-'a']=1;
}for(int i=0;i<26;i++){
// printf("%d\n",arr[i]);
if(arr[i]==1) ans++;
}if(ans==26) printf("Yes\n");
else printf("No\n");
memset(arr,0,sizeof(arr));//清零用于记录的数组
// memset(str,0,sizeof(str));
}return 0;
}
AC代码2:
#include<stdio.h>
#include<string.h>
int main() {
char str[1010];
int arr[27] = {0};
while (scanf("%s", str) != EOF) {
int ans = 0;
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (str[i] < 97 && str[i] >= 65)//此处不取等
arr[str[i] - 65] = 1;
if (str[i] >= 97)
arr[str[i] - 97] = 1;
}
for (int i = 0; i < 26; i++) {
// printf("%d\n",arr[i]);
if (arr[i] == 1) ans++;
}
if (ans == 26) printf("Yes\n");
else printf("No\n");
memset(arr, 0, sizeof(arr)); //清零用于记录的数组
}
return 0;
}