1. 程式人生 > 實用技巧 >LeetCode1408-陣列中的字串匹配

LeetCode1408-陣列中的字串匹配

非商業,LeetCode連結附上:

https://leetcode-cn.com/problems/string-matching-in-an-array/

進入正題。

題目:

給你一個字串陣列 words ,陣列中的每個字串都可以看作是一個單詞。請你按 任意 順序返回 words 中是其他單詞的子字串的所有單詞。

如果你可以刪除 words[j]最左側和/或最右側的若干字元得到 word[i] ,那麼字串 words[i] 就是 words[j] 的一個子字串。

示例:

示例 1:

輸入:words = ["mass","as","hero","superhero"]
輸出:["as","hero"]
解釋:"as" 是 "mass" 的子字串,"hero" 是 "superhero" 的子字串。
["hero","as"] 也是有效的答案。
示例 2:

輸入:words = ["leetcode","et","code"]
輸出:["et","code"]
解釋:"et" 和 "code" 都是 "leetcode" 的子字串。
示例 3:

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

提示:

1 <= words.length <= 100
1 <= words[i].length <= 30
words[i] 僅包含小寫英文字母。
題目資料 保證 每個 words[i] 都是獨一無二的。

程式碼實現:

public List<String> stringMatching(String[] words) {

        List<String> res = new ArrayList<>();
        if (words == null || words.length < 1) {
            return res;
        }
        String joinStr = String.join(",", words);

        for (String word : words) {
            if (joinStr.indexOf(word) != joinStr.lastIndexOf(word)) {
                res.add(word);
            }
        }

        return res;
}

分析:

主要用到了String的幾個方法: join、indexOf、lastIndexOf。

--End