假设给我一个字符串 S。
我需要找到包含 S1 作为前缀和 S2 作为后缀的 S 的不同子字符串的数量。
S、S1、S2的范围可以很大,即O(10^5)。
例如。
假设 S 是“abcdcd”,S1 是“ab”,S2 是“cd”。
“ababcdcd”的不同子串是:“a”、“b”、“c”、“d”、“ab”、“bc”、“cd”、“dc”、“abc”、“bcd”、“ cdc”、“dcd”、“abcd”、“bcdc”、“cdcd”、“abcdc”、“bcdcd”、“abcdcd”。使用 Suffix Array 可以轻松找到不同子串的总数。我正在尝试扩展相同的想法来解决问题。
在这些子串中,包含“ab”作为前缀和“cd”作为后缀的子串是:“abcd”、“abcdcd”。
因此答案是2。
PS:我相信它使用后缀数组,但我不确定如何。请帮忙。