文章目录
串:
空串 “”
空格串 " "
子串 包含自身
真子串 不包含自身
子串:n(n+1)/2+1
真子串:n(n+1)/2
非空真子串:n(n+1)/2-1
非空子串:n(n+1)/2
字符串匹配 strcpy_s
字符串匹配 BF算法(朴素算法) KMP算法
字符串比较 strcmp strncmp
字符串长度 strlen
字符串链接 strcat
字符串匹配
主串 子串 在主串中寻找和子串相同的子串,有相等的则返回最开始的下标,没有相等的则返回-1
BF算法(朴素算法)
算法思想:
首先有两个字符串,str是主串,sub是子串,pos是从主串中的第几个位置开始比较;i保存主串中的下标,j保存子串中的下标;
str[i] == sub[j] 则j++,i++
不相等,则i=i-j+1;(i要返回到失配前位置的下一个);j=0;
主串中一个一个字符进行比较
代码实现
int BF_search(const char* str, const char* sub, int pos)
{
if (str == nullptr || sub == nullptr || pos < 0 || pos >= strlen(str))
{
return -1;
}
int lenstr = strlen(str);
int lensub = strlen(sub);
int i = pos; //存放主串匹配时的下标
int j = 0; //存放子串匹配时的下标
while (i < lenstr && j < lensub)