列表

详情


HJ81. 字符串字符匹配

描述

判断短字符串S中的所有字符是否在长字符串T中全部出现。
请注意本题有多组样例输入。
数据范围:
进阶:时间复杂度:,空间复杂度:

输入描述

输入两个字符串。第一个为短字符串,第二个为长字符串。两个字符串均由小写字母组成。

输出描述

如果短字符串的所有字符均在长字符串中出现过,则输出字符串"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;
}

上一题