Q:给定字符串str和s,判断s是否在str中出现,如果出现则返回第一次出现时的索引
朴素匹配(简单匹配)算法即暴力搜索,逐字符比较字符str[i]与s[j]是否相等,直至i或者j超出边界。
int indexOfSubString(string& str, string& subStr){
int n=str.length(), m=subStr.length();
if(n < m){
// 主串比子串短
return -1;
}
else{
int i=0, j=0;
while(i+j<n && j<m){
if(str[i+j] == subStr[j]){
// 字符相同则同时前进一步,准备比较下一个字符
j++;
}
else{
// 字符不相同则j归零,子串重新匹配
i++;
j=0;
}
}
if(j>=m){
// 子串到达边界,证明子串存在于主串中
return i;
}
else{
return -1;
}
}
}