Cod sursa(job #2405691)

Utilizator ViAlexVisan Alexandru ViAlex Data 14 aprilie 2019 19:13:39
Problema Potrivirea sirurilor Scor 18
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#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;
    }
    out<<result.size()<<endl;
    for(unsigned i=0; i<result.size(); i++)
        out<<result[i]<<" ";


}
int main()
{
    read();
    str_match(a,b);
    return 0;
}