【发布时间】:2018-02-28 11:20:02
【问题描述】:
给定两个字符串text和pattern,找到text中与pattern匹配的最短子字符串的开始和结束索引,这意味着pattern中的所有字符在两者中都以相同的顺序出现子字符串和pattern,但在这些字符之间可能还有其他字符。
如果您可以从text 中找到这样的子字符串,则打印其开始和结束索引,否则打印-1、-1。如果有多个最短匹配子串,则返回开始索引最小的子串的索引。
示例输入:
axxxbcaxbcaxxbc abc
abcd x
axxxbaxbab ab
样本输出:
6 9
-1 -1
8 9
有没有人有一些好的算法来解决这个问题而不使用 内置支持 C++ 或 Python 中的正则表达式
【问题讨论】:
-
拥有
string = 'xxxxxxxxxx'和pattern = 'x'是0 1一个有效的答案? -
可以返回第一个找到的子串的索引,所以输出可以是0, 0。
-
那么为什么不尝试在字符串中找到第一次出现的模式呢?然后加上pattern的长度找到结束索引
-
因为pattern中的字符在找到的子串中不需要相邻,请仔细阅读问题说明
标签: python c++ string algorithm