Title: Given a string, find the longest repeating substring.
This topic can be solved by a suffix array: The suffix array is ordered so that repeated substrings are found in the adjacent suffix. My C + + code is implemented as follows:
classsolution{ Public:stringLongestrepeatingsubstring (stringSTR) {size_t len = str.size (); vector<string>Suffixarray (len); for(size_t i =0; i < Len; ++i) Suffixarray[i] = Str.substr (i); Sort (Suffixarray.begin (), Suffixarray.end ()); size_t MaxLen =0, idx =0; for(size_t i =0; I < Len-1; ++i) {size_t Curlen = Longestprefix (Suffixarray[i], suffixarray[i +1]);if(Curlen > MaxLen) {maxlen = Curlen; idx = i; } }returnSUFFIXARRAY[IDX].SUBSTR (0, MaxLen); }Private: size_t Longestprefix (stringSTR1,stringSTR2) {size_t len = min (Str1.size (), str2.size ()); for(size_t i =0; i < Len; ++i)if(Str1[i]! = Str2[i])returnIreturnLen }};
Interview question [suffix array]: longest repeating substring