【发布时间】:2014-09-03 02:57:46
【问题描述】:
是否有一种逻辑方法可以在字符串中找到重复的子字符串,无论子字符串重复多少次都可以使用;然后返回它与最终单词重复的次数。
For example, abc-abc-abc-
Can be broken into | abc- | abc- | abc-
= abc- x3
Example 2, abc-abc-abc-abc-
Can be broken into | abc- | abc- | abc- | abc-
= abc- x4
对于偶数重复,将字符串分成两半然后比较两个子字符串是没有问题的。然后你可以继续循环,直到一半不匹配。
对于奇数字符串长度,您可以将其分成 3 部分并比较所有三个部分并执行相同的操作。
当一个单词重复 7 或 11 次时,就会出现问题。将长度除以 4 或 5 可能会起作用。
例如,带有yesnoyesnoyesnoyesnoyesnoyesnoyesno 的字符串具有重复7 times. 的子字符串yesno
是否有某种公式、正则表达式或 linq 可以将 yesnoyesnoyesnoyesnoyesnoyesnoyesno 转换为 yesno (x7)?
【问题讨论】:
-
你想要最长的重复子串吗? substring 之间可以有其他字符串吗?喜欢 aaaaaabaaaaaa (x2 aaaaaa)?
-
如果你想要最长的重复子串,那么
abc-abc-abc-abc-将被表示为abc-abc- x2 -
@AndrewShepherd 我询问了
shortest子字符串。所以可以进一步分解为abc- -
@brz 这被认为是一个唯一的字符串。现在如果是
aaaaaabaaaaaab,那么它将是aaaaaab重复x2。
标签: c# regex string substring formula