题目来源:
HihoCoder1441题目要求:
根据输入的字符串构建后缀自动机,然后输出指定状态的信息。 解答:
后缀自动机是一种处理字符串的技术。利用后缀自动机可以高效地对字符串的后缀串、子串以及相关的统计信息进行计算和处理。本文在解答本题过程中给出后缀自动机的基本概念和具有的特点。·子串分组:
一个字符串的后缀自动机是一个有限状态机,也就是一个具有唯一起点的有向图。为了便于说明问题,这里首先给出一个样例,对于字符串:aabbabd,我们找出其包含的所有的不同的子串,并用endpos表示每一个子串在原字符串的结束位置,例如:子串"aab"的结束位置是源字符串的第3个字符,因此,endpos("aab")={3},而子串"ab"的结束位置在原字符串的第3个字符和第6个字符,因此,endpos("ab")={3, 6},我们列举所有的子串并找出每个子串的endpos结果,如下表:
子串
|
endpos
|
子串
|
endpos
|
"a"
|
{1, 2, 5}
|
"b"
|
{3, 4, 6}
|
"aa"
|
{2}
|
"bb"
|
{4}
|
"aab"
|
{3}
|
"bba"
|
{5}
|
"aabb"
|
{4}
|
"bbab"
|
{6}
|
"aabba"
|
{5}
|
|