string - 如何检测字符串中的回文循环长度?

标签 string algorithm palindrome

假设一个字符串是这样的“abaabaabaabaaba”,这里的回文周期是3,因为你可以在每个第3个位置找到字符串aba,并且你可以通过将任意数量的“aba”连接到字符串来增强回文。

我认为使用 Manacher 算法可以有效地检测到这一点,但是如何检测呢?

最佳答案

通过在S+S中搜索字符串S就可以轻松找到它。您找到的第一个索引是您想要的循环编号(可能是整个字符串)。在 python 中,它会是这样的:

In [1]: s = "abaabaabaabaaba"

In [2]: print (s+s).index(s, 1)
3

1 用于忽略索引 0,这将是一个简单的匹配。

关于string - 如何检测字符串中的回文循环长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30923687/

相关文章:

mysql - 由于 appcelerator 中错误的字符串连接而导致参数化执行查询中断

iphone - 如何在 iPhone 上连接字符和字符串?

python - 组合字符串,提取子字符串

string - 给定长度 L 找到仅由 as & bs >= L 组成的最短字符串,这样添加一些字符(a 或 b)不会产生新的回文

Python 脚本 : How to tell if in O(N) or O(N^2) time?

c# - 如何从字符串创建 LINQ 查询?

algorithm - 应用动态规划技术的子问题的独立性

java - 著名压缩算法(LZ78)执行缓慢

c# - 使用 C# 的欧拉项目 #4

java - 将数字列表分成较小的列表, "sum"大致相同