1. 程式人生 > >牛客網(直通BAT面試演算法班) Day1

牛客網(直通BAT面試演算法班) Day1

class Rotation { public:     bool chkRotation(string A, int lena, string B, int lenb) {     string big = A + A;     if(lena!=lenb)         return false;     return KMP(big,B);     }     const vector<int> * kmp_next(string &m)  //找到待匹配串的next陣列     {         static vector<int> next(m.size());         next[0]=0;         int temp;         for(int i=1; i<next.size(); i++)         {             temp=next[i-1];             while(m[i]!=m[temp]&&temp>0)             {                 temp=next[temp-1];             }             if(m[i]==m[temp])                 next[i]=temp+1;             else next[i]=0;         }         return &next;     }     bool KMP(string text,string m)   //匹配串     {     const vector<int> * next=kmp_next(m);     int tp=0;     int mp=0;     for(tp=0; tp<text.size(); tp++)     {         while(text[tp]!=m[mp]&&mp)  //遇到不匹配時情況              mp=(*next)[mp-1];         if(text[tp]==m[mp])             mp++;         if(mp==m.size())         {             return true;         }     }     return false;     } };