#include<iostream>
using namespace std;
void GetNextArrary(string szPattern , int* aiNext)
{
aiNext[0] =-1;
int iPatternLength = szPattern.size() ;
int iPatternIndex = 0;
int iNextIndex = -1;
while(iPatternIndex <= iPatternLength)
{
if(iNextIndex == -1 || szPattern[iPatternIndex] == szPattern[iNextIndex])
{
iNextIndex ++;
iPatternIndex ++;
aiNext[iPatternIndex] = iNextIndex;
}
else
iNextIndex = aiNext[iNextIndex];
}
}
int main()
{
string szInput="";
cout<<"input calculated string plaase"<<endl;
int aiNext[1000];
memset(aiNext,0,sizeof(aiNext));
while(cin>>szInput)
{
GetNextArrary(szInput,aiNext);
cout<<"the cycle is "<<szInput.size() - aiNext[szInput.size()]<<endl;
cout<<"input calculated string plaase"<<endl;
}
}
字符串周期 KMP求解
最新推荐文章于 2023-02-24 21:41:22 发布