【发布时间】:2019-02-04 10:32:41
【问题描述】:
如何在 c++ 中检查两个字符串是否有任何公共部分(子字符串)。
我想对字符串进行排序,然后在两个字符串上使用循环来检查它们是否有共同的部分。但我不确定。而且我还认为这不是该问题的最佳策略
考虑字符串 - 'batman' 和 'catman' 他们有一个共同的部分“atman”。
附:我不检查多个字符。例如 - 'apple' 和 'batman' 有一个共同点,但我对子字符串感兴趣(最少两个常见的连续字符)。
【问题讨论】:
-
我想你的意思是 LCS 算法 (en.wikipedia.org/wiki/Longest_common_substring_problem)。据我所知,没有库存实现。
-
排序然后检查普通字母只检查普通字母,而不是子字符串。例如,考虑例如
"batman"和"manbat"。如果你对字母进行排序,那么字符串将被认为是完全相等的。 -
Google 的diff-match-patch 非常适合这个。获取两个字符串之间的差异,过滤相等的长度。
-
如果您有任何特定的要求或限制,这些确实应该是实际问题的一部分。请花一些时间查看how to ask good questions 和this question checklist。