【字符串匹配】
Problem Link
给出 字符串 text
和 字符串列表 words
, 返回所有的索引对 [i, j]
使得在索引对范围内的子字符串 text[i]...text[j]
(包括 i
和 j
)属于字符串列表 words
。
Example:
示例 1:
输入: text = "thestoryofleetcodeandme", words = ["story","fleet","leetcode"]
输出: [[3,7],[9,13],[10,17]]
示例 2:
输入: text = "ababa", words = ["aba","ab"]
输出: [[0,1],[0,2],[2,3],[2,4]]
解释:
注意,返回的配对可以有交叉,比如,"aba" 既在 [0,2] 中也在 [2,4] 中
提示:
- 所有字符串都只包含小写字母。
- 保证
words
中的字符串无重复。 1 <= text.length <= 100
1 <= words.length <= 20
1 <= words[i].length <= 50
- 按序返回索引对
[i,j]
(即,按照索引对的第一个索引进行排序,当第一个索引对相同时按照第二个索引对排序)。
Analysis
简单题目,暴力查找即可
!> 需要注意的是返回的结果需要排序
Solution 【字符串匹配】
执行用时 : 6 ms, 在Index Pairs of a String的Java提交中击败了100.00% 的用户
内存消耗 : 36.7 MB, 在Index Pairs of a String的Java提交中击败了100.00% 的用户
|
|
这里的匹配采用了 String.indexOf() 进行操作,因此复杂度较高
可以优化为采用 KMP 或 Boyer-Moore 等算法进行匹配,使得匹配部分时间复杂度接近 $O(N)$