算法的基本思想是:从主串S的第pos个字符起和模式的第一个字符比较之,若相等,则继续逐个比较后续字符,否则从主串的下一个字符起再重新和模式的字符比较之。依次类推,直至模式T中的每个字符依次和主串S中的一个连续的字符序列相等,则称匹配成功,函数值为和模式T中第一个字符相等的字符在主串中的序号,否则称匹配不成功,函数值为零。
你的任务是将S中每次比较的字符输出来,并将匹配的序号输出。
代码:
#include <iostream>
using namespace std;
int main()
{
int m=3;
while(m--){
int i=0,j=0;
string s1,s2;
cin>>s1>>s2;
while(i<s1.size()&&j<s2.size()){
cout<<s1[i];
if(j==0&&s2[j]!=s1[i]){
i++;
continue;
}
if(s1[i]==s2[j]){
i++;
j++;
}else{
i=i-j+1;
j=0;
}
}
cout<<endl;
if(j>=s2.size()){
cout<<i-j+1<<endl;
}else{
cout<<0<<endl;
}
}
return 0;
}
结果: