int query(string s) { int len = s.length(); int u = 0, ans = 0; rep(i, 0, len - 1) { u = t[u].son[s[i] - 'a']; ans += t[u].end; t[u].end = 0; } /* rep(i, 0, len - 1) { u = t[u].son[s[i] - 'a']; for (int i = u;i && t[i].end != -1;i = t[i].fail) { ans += t[i].end; t[i].end = -1; } } */ return ans; }
query函数未被注释的写法可过本题
2 ac aac aac
应该输出2,上面代码却输出1