思路
注意不要理解为判断短字符串是否为长字符串的子串
该题时判断是否包含所有字母
- 获得短字符串和长字符串
- 将长字符串在hash表中对应位置赋值为1,为了后续统计短字符串字符在长字符个数
- 统计短字符所在位置的个数
- 比较长字符串中短字符串字符所占个数和短字符串本身个数
- 如果相同则包含,如果不同则不包含
Answer
#include<stdio.h>
#include<string.h>
int main() {
char str1[200];
char str2[200];
int cnt=0,isStr = 0;
int hash[200]={0};
scanf("%s", str1); //短字符
scanf("%s", str2);
for (int i = 0; i < strlen(str2); i++) {
hash[str2[i]] = 1; //将字符串字符所在位置赋值为1;
}
for (int i = 0; i < strlen(str1); i++) {
if(hash[str1[i]]){
cnt++;//统计短字符所在位置的个数
}
}
if(cnt == strlen(str1)){
isStr=1;
}
if (isStr) {
printf("true\n");
} else {
printf("false\n");
}
return 0;
}