6
实时字符串匹配
任务 任务是打入您选择的实时精确字符串匹配算法。 输入值 标准输入上提供两行文本,并用新行分隔。第一行包含“模式”,将只是从字母中提取的ASCII字符串a-z。 第二行包含较长的“文本”,也将只是从字母中提取的ASCII字符串a-z。 输出量 精确匹配发生位置的索引列表。您应该输出发生的每个比赛的开始位置。 规格 您的算法可以花费线性时间对模式进行预处理。然后,它必须从左到右读取文本,并为文本中的每个单个字符花费恒定的时间,并在出现任何新匹配项时立即输出。匹配当然可以彼此重叠。 算法 有许多实时精确匹配算法。例如,在KMP Wiki上提到了一个。您可以使用任意一个,但必须始终输出正确的答案。 我将保留每个语言领导者的表格,以便那些喜欢流行语言的人也能以自己的方式获胜。请说明您实施了哪种算法。 即时的 对于实时的含义似乎有很多困惑。这不仅仅是线性时间。因此,标准的KMP 不是实时的。问题中的链接明确指向KMP Wiki页面上有关KMP实时变体的部分。Boyer-Moore-Galil也不是实时的。这个理论性的问题/答案讨论了这个问题,或者只是谷歌“实时精确匹配”或类似的条款。