LeetCode 30, Hard. Topics: Hash Table, String, Sliding Window. View on LeetCode.
Generate this problem as a practice environment: tested reference solution, 18 parametrized pytest cases, and a playground notebook:
Problem
You are given a string s and an array of strings words. All the strings of words are of the same length.
A concatenated string is a string that exactly contains all the strings of any permutation of words concatenated.
- For example, if
words = ["ab","cd","ef"], then "abcdef", "abefcd", "cdabef", "cdefab", "efabcd", and "efcdab" are all concatenated strings. "acdbef" is not a concatenated string because it is not the concatenation of any permutation of words.
Examples
Explanation:
The substring starting at 0 is “barfoo”. It is the concatenation of [“bar”,“foo”] which is a permutation of words.
The substring starting at 9 is “foobar”. It is the concatenation of [“foo”,“bar”] which is a permutation of words.
Explanation:
There is no concatenated substring.
Explanation:
The substring starting at 6 is “foobarthe”. It is the concatenation of [“foo”,“bar”,“the”].
The substring starting at 9 is “barthefoo”. It is the concatenation of [“bar”,“the”,“foo”].
The substring starting at 12 is “thefoobar”. It is the concatenation of [“the”,“foo”,“bar”].
Constraints
- 1 <= s.length <= 10^4
- 1 <= words.length <= 5000
- 1 <= words[i].length <= 30
- s and words[i] consist of lowercase English letters.
Solution
Reference implementation from solution.py on GitHub, full suite in test_solution.py:
Complexity
Last modified on September 7, 2026