纯C
题目标题:判断短字符串中的所有字符是否在长字符串中全部出现
是判断短字符串中所有字符有否有在长字符串中全部出现,并不是判断短字符串是否是长字符串的字串,那么就很简单了(判断子串也很简单)。
毫无疑问就是哈希表了。
时间复杂度:O(n)
空间复杂度:O(1)
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int IsAllCharExist(char* pShortString,char* pLongString)
{
int len_short = strlen(pShortString);
int len_long = strlen(pLongString);
int hash_table[128] = {0};
int count = 0;
for(int i=0; i<len_long; i++)
{
hash_table[pLongString[i]]=1;
}
for(int i=0; i<len_short; i++)
{
if(hash_table[pShortString[i]])
count++;
}
if(count == len_short)
return 1;
else
return 0;
}
int main()
{
char str_short[50]={'\0'}, str_long[200]={'\0'};
while(gets(str_short))
{
gets(str_long);
int flag = IsAllCharExist(str_short, str_long);
if(flag)
printf("true\n");
else
printf("false\n");
}
return 0;
}
京公网安备 11010502036488号