Pagini recente » Cod sursa (job #428434) | Cod sursa (job #1567943) | Cod sursa (job #2583814) | Cod sursa (job #3164989) | Cod sursa (job #3257625)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
string s;
int j, lps[110];
int main()
{
cin>>s;
s="A"+s;
for(int i=1;i<s.size();++i)
if(s[i]==s[lps[i-1]+1] && lps[i-1]+1<i)
lps[i]=lps[i-1]+1;
else
{
j=i-1;
while(s[lps[j]+1]!=s[i] && lps[j]!=0)
j=lps[j];
if(lps[j]==0 && s[1]==s[i] && i>1)
lps[i]=1;
if(lps[j]!=0 && s[lps[j]+1]==s[i] && lps[j]+1<i)
lps[i]=lps[j]+1;
}
return 0;
}