纯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; }