题目描述
给定字符串 S
和单词字典 words
, 求 words[i]
中是 S
的子序列的单词个数。
示例: 输入: S = "abcde" words = ["a", "bb", "acd", "ace"] 输出: 3 解释: 有三个是 S 的子序列的单词: "a", "acd", "ace"。
注意:
- 所有在
words
和S
里的单词都只由小写字母组成。 S
的长度在[1, 50000]
。words
的长度在[1, 5000]
。words[i]
的长度在[1, 50]
。
解题思路
int numMatchingSubseq(string S, vector<string>& words) {
int ans = 0,j;
string::size_type pre;
for(int i=0;i<words.size();i++){
string tmp = words[i];
pre = -1;
for(j=0;j<tmp.length();j++){
pre = S.find_first_of(tmp[j],pre+1);
if(pre == string::npos) break;
}
if(j>=tmp.length()) ans++;
}
return ans;
}