首页 > 试题广场 >

构建短字符串

[编程题]构建短字符串
  • 热度指数:4381 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
给定任意一个较短的子串,和另一个较长的字符串,判断短的字符串是否能够由长字符串中的字符构建出来,且长串中的每个字符只能用一次。

输入描述:
一行数据包括一个较短的字符串S和一个较长的字符串T,用一个空格分隔。保证1<=|S|<=|T|<=100000。


输出描述:
如果短的字符串可以由长字符串中的字符构建出来,输出字符串 “true”,否则输出字符串 "false"。
示例1

输入

a b

输出

false
示例2

输入

fj jfiejfiejfie

输出

true
#include <stdio.h>
#include <stdlib.h>

int main(void) {
  char s[100000] = "", t[100000] = "";
  scanf("%s %s", s, t);
  
  int counts[26] = { 0 };
  
  const char* p = t;
  while (*p) ++counts[*p++ - 97];
  
  p = s;
  while (*p) --counts[*p++ - 97];
  
  int i;
  for (i = 0; i < 26; ++i)
    if (counts[i] < 0)
      return puts("false"), 0;
  
  return puts("true"), 0;
}

发表于 2021-07-21 19:11:03 回复(0)