792. Number of Matching Subsequences
Problem description:
Given a string s
and an array of strings words
, return the number of words[i]
that is a subsequence of s
.
A subsequence of a string is a new string generated from the original string with some characters (can be none) deleted without changing the relative order of the remaining characters.
- For example,
"ace"
is a subsequence of"abcde"
.
Example 1:
1 | Input: s = "abcde", words = ["a","bb","acd","ace"] |
Example 2:
1 | Input: s = "dsahjpjauf", words = ["ahjpjau","ja","ahbwzgqnuk","tnmlanowax"] |
Constraints:
1 <= s.length <= 5 * 104
1 <= words.length <= 5000
1 <= words[i].length <= 50
s
andwords[i]
consist of only lowercase English letters.
Solution:
We don’t want to check each word one by one. So the idea is to cache every word’s starting character to dictionary. When we walk through the s
, we find all the candidate that starts with the s[i]
.
1 | class Solution: |
time complexity: $O()$
space complexity: $O()$
reference:
related problem: