pattern 1: [(0,1)(2,4)] => [(2,3)(3,4)(4,5)]
pattern 2: [(0,1)] => [(2,3)(4,5)]
在我的定义中pattern 2
是pattern 1
的子模式,因为(0,1)
pattern 2
(0,1)(2,4)
包含pattern 1
(2,3)(4,5)
和pattern 2
(2,3)(3,4)(4,5)
的{{1}}包含pattern 1
的1}}。
实施此比较的适当且有效的算法是什么?感谢:)
答案 0 :(得分:0)
从概念上讲:计算pattern1和pattern2的Longest Common Subsequence,并检查它是否等于pattern2。
实际上:您想测试pattern2是否是pattern1的子字符串。通过对两个字符串进行单次扫描,可以更快地完成此操作。
答案 1 :(得分:0)
琐碎:pattern2的每个字符都出现在pattern1中,并且顺序相同。前面的简单检查是长度(pattern2)< = length(pattern1),因此这是O(长度(pattern1))。这是最佳的,因为必须考虑所有字符。