HJ81. 字符串字符匹配
描述
输入描述
输入两个字符串。第一个为短字符串,第二个为长字符串。两个字符串均由小写字母组成。
输出描述
如果短字符串的所有字符均在长字符串中出现过,则输出字符串"true"。否则输出字符串"false"。
示例1
输入:
bc abc
输出:
true
说明:
其中abc含有bc,输出"true"C 解法, 执行用时: 1ms, 内存消耗: 276KB, 提交时间: 2020-12-19
#include <stdio.h> #include <string.h> int main(void) { int i; char s[123]={0}, l[123]={0}, ch; for( ; (ch=getchar())!=EOF; ){ s[ch]=1; for( ; (ch=getchar())!='\n'; ) s[ch]=1; for( ; (ch=getchar())!='\n'; ) l[ch]=1; for(i=97; i<123; i++) if(s[i]) if(!l[i]) break; if(i<123) printf("false\n"); else printf("true\n"); memset(s+97, 0, 26); memset(l+97, 0, 26); } return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 336KB, 提交时间: 2022-02-08
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> int main() { char a[210]; char b[210]; int s1, s2, i, j, flag = 0, sum = 0;; while (gets(a) != NULL) { gets(b); s1 = strlen(a); s2 = strlen(b); sum=0; if (s1 <= s2) { for (i = 0; i < s1; i++) { flag = 0; for (j = 0; j < s2; j++) { if (a[i] == b[j]) { flag = 1; break; } } sum = sum + flag; } if (sum == s1) printf("true\n"); else printf("false\n"); } else { for (i = 0; i < s2; i++) { flag = 0; for (j = 0; j < s1; j++) { if (a[i] == b[j]) { flag = 1; break; } } sum = sum + flag; } if (sum == s2) printf("true\n"); else printf("false\n"); } memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); } return 0; }