Pagini recente » Cod sursa (job #2443086) | Cod sursa (job #3186916) | Borderou de evaluare (job #1330607) | Cod sursa (job #2375502) | Cod sursa (job #2405696)
#include <iostream>
#include<fstream>
#include<string>
#include<vector>
using namespace std;
ifstream in("strmatch.in");
ofstream out("strmatch.out");
string a,b;
void read()
{
in>>a>>b;
}
void str_match(string a,string b)
{
int l1=a.length();
int l2=b.length();
int frecv[l2+1] {0};
vector<int>result;
for(int i=1; i<=l2; i++)
{
int last_index=frecv[i-1];
if(b[i]==a[last_index+1])
{
frecv[i]=last_index+1;
if(frecv[i]==l1-1)
{
result.push_back(i-l1+1);
frecv[i]=0;
}
}
else
frecv[i]=0;
}
unsigned len=min((int)result.size(),1000);
out<<len<<endl;
for(unsigned i=0; i<len; i++)
out<<result[i]<<" ";
}
int main()
{
read();
str_match(a,b);
return 0;
}