我需要在用户给出的输入中查找模式。如果找到,则返回(开始,结束)位置。
例如: -
输入= A B C D B C A D
要查找的模式= D C A
输出= 3,6
模式不一定必须连续发生。
可以是D在输入的开头,C在中间,A在结尾。 - 一个有效的场景。
我很困惑的两件事。
如何接受输入?作为阵列?如果是,那么作为String或Char数组?
如何查找模式?
答案 0 :(得分:1)
输入的格式在这里无关紧要:您可以将字符串和序列作为字符串。诀窍在于决定用于解决问题的算法。
在这种情况下,贪婪的策略将起作用:
S
(字符串)和P
(模式)。si
,为模式创建pi
,并将它们设置为零。P.charAt(pi)
开始,在S
中搜索字母si
。如果在si
到最后的子字符串中找不到该字母,则该模式不存在P.charAt(pi)
中首次出现S
,将si
设置为该索引加1,然后将pi
提前一个。P
的末尾,则表示您已完成P
的长度。请注意,此问题可能有多种解决方案。当存在解决方案时,该算法找到第一个" lexicographic"解决问题的索引集。