目录
描述
输入描述:
输出描述:
解题过程
提交代码
学习代码
收藏点
一、strstr函数
二、stdlib.h
描述
判断短字符串S中的所有字符是否在长字符串T中全部出现。
请注意本题有多组样例输入。
数据范围:1≤len(S),len(T)≤200
进阶:时间复杂度:O(n)\O(n) ,空间复杂度:O(n)\O(n)
输入描述:
输入两个字符串。第一个为短字符串,第二个为长字符串。两个字符串均由小写字母组成。
输出描述:
如果短字符串的所有字符均在长字符串中出现过,则输出字符串"true"。否则输出字符串"false"。
解题过程
记得做某企业的笔试题时,遇到过差不多的题,我使用的是一个类似于滑动窗口的方法,但是半个月过去了我已经忘记了。。然后今天做不出来了,awkward,如果面试问起这道题就更尴尬了。
所以,只能先学习学习别人的代码了。
等一下!!突然发现和我某企业笔试中遇到的还不一样!这个简单许多!笑死,那就不用这么写了:
直接用两个循环就是最简单最笨的方法了... 无语了家人们真是无语了[笑哭]
提交代码
#include <stdio.h>
#include <string.h>
int main() {
int num=0;
int i,j;
int lens,lent;
char s[200];//短字符串
char t[200];//长字符串
char p[200];
scanf("%s",s);
scanf("%s",t);
strcpy(p,s);
lens=strlen(s);
lent=strlen(t);
for(i=0;i<lens;i++)
{
for(j=0;j<lent;j++)
{
if(s[i]==t[j])
{
num++;
break;
}
}
}
if(num==lens)
printf("true");
else printf("false");
return 0;
}
学习代码
(来源:https://www.nowcoder.com/users/126628404)
/* 利用strstr 函数非常简单!*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char s[200], l[200];
while(scanf("%s", s) != EOF)
{
scanf("%s", l);
char *ret; //子串第一次出现的位置
ret = strstr(l, s);
if(ret != NULL)
printf("true");
else
printf("false");
}
return 0;
}
用了指针、strstr等,很简洁,值得学习。
收藏点
一、strstr函数
strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返回NULL。
二、stdlib.h
stdlib 头文件即standard library标准库头文件。stdlib.h里面定义了五种类型、一些宏和通用工具函数。 类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。 具体的内容可以打开编译器的include目录里面的stdlib.h头文件查看。