c_cpp 给定两个字符串S1和S2,要求判断S2能否被S1做循环移位得到的字符串包含。例如:s1 = AABCD和S2 = CDAA,返回true,s1 = ABCD和s2 = ACBD,返回fal
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 给定两个字符串S1和S2,要求判断S2能否被S1做循环移位得到的字符串包含。例如:s1 = AABCD和S2 = CDAA,返回true,s1 = ABCD和s2 = ACBD,返回fal相关的知识,希望对你有一定的参考价值。
int strcontain(const char* const str1, const char* const str2){
if(NULL == str1 || NULL == str2)
return 0;
int len1, len2, i;
char* tmp = NULL;
len1 = strlen(str1);
len2 = strlen(str2);
if(len2 > len1)
return 0;
tmp = (char*)malloc(len1 * 2);
memset(tmp, 0, len1*2);
strcpy(tmp, str1);
for(i = 0; i < len1; i++){
if(strncmp(tmp + i, str2, len2) == 0){
free(tmp);
tmp = NULL;
return 1;
}
tmp[len1 + i] = str1[i];
}
free(tmp);
tmp = NULL;
return 0;
}
以上是关于c_cpp 给定两个字符串S1和S2,要求判断S2能否被S1做循环移位得到的字符串包含。例如:s1 = AABCD和S2 = CDAA,返回true,s1 = ABCD和s2 = ACBD,返回fal的主要内容,如果未能解决你的问题,请参考以下文章
2021-06-11:给定两个字符串s1和s2,问s2最少删除多少字符可以成为s1的子串? 比如 s1 = “abcde“,s2 = “axbc“。
2021-11-25:给定两个字符串s1和s2,返回在s1中有多少个子串等于s2。来自美团。
翻转子串
第三章结构之法--------字符串移位包含
数组与字符串:翻转子串
Leetcode 567.字符串的排列