void GetNextVal(const char* str, vector<int>& vec) { assert(str != NULL); if (str != NULL) { int iLen = strlen(str); vec.resize(iLen, -1); int i = 0; int j = -1; if (iLen > 0) { vec[i] = j; } while (i < iLen - 1) { if (j == -1 || *(str + j) == *(str + i)) { i++; j++; if (*(str + j) == *(str + i)) { vec[i] = vec[j]; } else { vec[i] = j; } } else { j = vec[j]; } } } }