---
# System prepended metadata

title: Leetcode 1408. String Matching in an Array
tags: [Leetcode]

---

---
###### tags: `Leetcode`
---
# Leetcode 1408. String Matching in an Array


[link](https://leetcode.com/problems/string-matching-in-an-array/)

---

Given an array of string words, return all strings in words that is a substring of another word. You can return the answer in any order.

A substring is a contiguous sequence of characters within a string

#### Example 1:

Input: words = ["mass","as","hero","superhero"]
Output: ["as","hero"]
Explanation: "as" is substring of "mass" and "hero" is substring of "superhero".
["hero","as"] is also a valid answer. 

#### Example 2:

Input: words = ["leetcode","et","code"]
Output: ["et","code"]
Explanation: "et", "code" are substring of "leetcode".

#### Example 3:

Input: words = ["blue","green","bu"]
Output: []
Explanation: No string of words is substring of another string.


#### Constraints:

- 1 <= words.length <= 100
- 1 <= words[i].length <= 30
- words[i] contains only lowercase English letters.
- All the strings of words are unique.

---

For each words[i], check if it’s a substring of words[j] (0 <= j < N && i != j). Once find a match, we can push words[i] to result and continue to word[i + 1].

#### Solution 1
```python=
class Solution:
    def stringMatching(self, words: List[str]) -> List[str]:
        lst = []
        for i, w1 in enumerate(words):
            for j, w2 in enumerate(words):
                if i != j and (w1 in w2):
                    if w1 not in lst: lst.append(w1)

        return lst
```
O(T): O(n^2)
O(S): O(n)

