3839. Number of Prefix Connected Groups
Description
You are given an array of strings words and an integer k.
Two words a and b at distinct indices are prefix-connected if a[0..k-1] == b[0..k-1].
A connected group is a set of words such that each pair of words is prefix-connected.
Return the number of connected groups that contain at least two words, formed from the given words.
Note:
- Words with length less than
kcannot join any group and are ignored. - Duplicate strings are treated as separate words.
Β
Example 1:
Input: words = ["apple","apply","banana","bandit"], k = 2
Output: 2
Explanation:
Words sharing the same first k = 2 letters are grouped together:
words[0] = "apple"andwords[1] = "apply"share prefix"ap".words[2] = "banana"andwords[3] = "bandit"share prefix"ba".
Thus, there are 2 connected groups, each containing at least two words.
Example 2:
Input: words = ["car","cat","cartoon"], k = 3
Output: 1
Explanation:
Words are evaluated for a prefix of length k = 3:
words[0] = "car"andwords[2] = "cartoon"share prefix"car".words[1] = "cat"does not share a 3-length prefix with any other word.
Thus, there is 1 connected group.
Example 3:
Input: words = ["bat","dog","dog","doggy","bat"], k = 3
Output: 2
Explanation:
Words are evaluated for a prefix of length k = 3:
words[0] = "bat"andwords[4] = "bat"form a group.words[1] = "dog",words[2] = "dog"andwords[3] = "doggy"share prefix"dog".
Thus, there are 2 connected groups, each containing at least two words.
Β
Constraints:
1 <= words.length <= 50001 <= words[i].length <= 1001 <= k <= 100- All strings in
wordsconsist of lowercase English letters.
Solutions
Solution 1: Hash Table
We use a hash table \(\textit{cnt}\) to count the number of occurrences of the prefix composed of the first \(k\) characters of each string with length greater than or equal to \(k\). Finally, we count the number of keys in \(\textit{cnt}\) with values greater than \(1\), which is the number of connected groups.
The time complexity is \(O(n \times k)\), and the space complexity is \(O(n)\), where \(n\) is the length of \(\textit{words}\).
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |