leetcode-1408. 数组中的字符串匹配

202 阅读1分钟

题目

1408. 数组中的字符串匹配

难度简单

给你一个字符串数组 words ,数组中的每个字符串都可以看作是一个单词。请你按 任意 顺序返回 words 中是其他单词的子字符串的所有单词。

如果你可以删除 words[j] 最左侧和/或最右侧的若干字符得到 word[i] ,那么字符串 words[i] 就是 words[j] 的一个子字符串。

示例 1:

输入: words = ["mass","as","hero","superhero"]
输出: ["as","hero"]

示例 2:

输入: words = ["leetcode","et","code"]
输出: ["et","code"]

示例 3:

输入: words = ["blue","green","bu"]
输出: []

思路

简单题就简单做,这个就是两层循环直接暴力匹配就好

进一步优化的方向:提高匹配子串这一步骤的效率,可以使用 KMP 算法进行优化,实现里直接用了标准库函数没自己写了,库函数还是方便的

这个题出的实在是没什么意思。。。

实现

func stringMatching(words []string) []string {
    var ret []string
    for i:=0 ; i<len(words) ; i++ {
        for j:=0 ; j<len(words) ; j++ {
            if i!=j && strings.Contains(words[j], words[i]) {
                ret = append(ret, words[i])
                break
            }
        }
    }
    return ret
}