请问,如何解决以下问题:
如何在给定字符串中找到最常见的子字符串?例如字符串:
acd0a55b171241cc13afc7135acd09d609f9e4928e18908e6f6fb5574b4ac13731f993031a13f
在此字符串中有子字符串acd0
和c13
。
还有子串13
等等。
如何查找按字符数排名的所有出现的子字符串?
例如:
acd0
:4个字符2次
c13
:2次3个字符
13
:2个字符2次!
实际上13
出现了4次,但在c13
中已经两次,因此不允许再次计算。
解决方案应该是Bash。
答案 0 :(得分:3)
您需要创建suffix tree。 它是一个包含给定字符串的所有重复子字符串的树。
创建后缀树的最有效算法是Ukkonen's algorithm
更多信息: Fast String Searching With Suffix Trees
这个算法在网上有一些实现c ++和python。 我不确定在bash中直接写这个是否容易,但你可以试试。