概念:
给定一个主串S,一个子串T,主串(串S)中寻找第一次出现模式串(串T)的位置。
按照下标返回
#include<iostream>
using namespace std;
int index(string S, string T) {
int i = 0;
int j = 0;
int Slength = S.length();
int Tlength = T.length();
while (i < S.length() && j < Tlength)
{
if (S[i] == T[j]) { //当主串S[i] 与子串T[j]相等时,主串下标i和子串下标j同时右移
i++;
j++;
}
else {
i = i - j + 1; //主串移动到前一次匹配的后一位
j = 0; //子串返回最开始位置
}
}
if (j == T.length())
return i - j;
else
return -1; //看个人喜好,返回下标位置不要为0就行
}
void test01()
{
string s = "aabb";
string t = "ab";
int pos=index(s, t); //返回匹配对应的下标
cout << pos << endl;
}
int main() {
test01();
return 0;
}
按照位置返回(如第一个字符串的字符位置是1,第二个字符就是2)
这里在输入字符串的时候需要做特殊处理,数组是从0开始计算&#x