如何使用Bash查找字符串中最频繁的子串?

时间:2016-11-14 10:15:47

标签: bash algorithm combinations string-algorithm

请问,如何解决以下问题:

如何在给定字符串中找到最常见的子字符串?例如字符串:

acd0a55b171241cc13afc7135acd09d609f9e4928e18908e6f6fb5574b4ac13731f993031a13f

在此字符串中有子字符串acd0c13。 还有子串13等等。

如何查找按字符数排名的所有出现的子字符串?

例如:

acd0:4个字符2次

c13:2次3个字符

13:2个字符2次!

实际上13出现了4次,但在c13中已经两次,因此不允许再次计算。

解决方案应该是Bash。

1 个答案:

答案 0 :(得分:3)

您需要创建suffix tree。 它是一个包含给定字符串的所有重复子字符串的树。

创建后缀树的最有效算法是Ukkonen's algorithm

更多信息: Fast String Searching With Suffix Trees

这个算法在网上有一些实现c ++和python。 我不确定在bash中直接写这个是否容易,但你可以试试。