我需要在用户给出的输入中寻找模式。如果找到,则返回(开始,结束)位置。
例如:-
输入 =A B C D B C A D
要寻找的模式 =D C A
输出 =3,6
该模式不必连续出现。
就像 D 在输入的开头,C 在中间,A 在结尾。- 一个有效的场景。
我很困惑的两件事。
如何接受输入?作为一个数组?如果是,那么作为 String 或 Char 数组?
我如何寻找模式?
输入的格式在这里无关紧要:您可以将字符串和序列都作为字符串。诀窍是决定使用一种算法来解决问题。
在这种情况下,贪婪策略将起作用:
S
(string) 和P
(pattern)。si
为字符串和模式创建两个索引pi
,并将它们都设置为零。P.charAt(pi)
从S
开始的字母si
。如果在从到结尾的子字符串中找不到该字母si
,则该模式不存在P.charAt(pi)
,S
设置si
为该索引加一,然后前进pi
一。P
,你就完成了P
。请注意,此问题可能有多种解决方案。当存在解决方案时,该算法会找到解决问题的第一组“字典式”索引。