本文主要是介绍LeetCode 2942. 查找包含给定字符的单词,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给你一个下标从 0 开始的字符串数组 words 和一个字符 x 。
请你返回一个 下标数组 ,表示下标在数组中对应的单词包含字符 x 。
注意 ,返回的数组可以是 任意 顺序。
示例 1:
输入:words = [“leet”,“code”], x = “e”
输出:[0,1]
解释:“e” 在两个单词中都出现了:“leet” 和 “code” 。所以我们返回下标 0 和 1 。
示例 2:
输入:words = [“abc”,“bcd”,“aaaa”,“cbc”], x = “a”
输出:[0,2]
解释:“a” 在 “abc” 和 “aaaa” 中出现了,所以我们返回下标 0 和 2 。
示例 3:
输入:words = [“abc”,“bcd”,“aaaa”,“cbc”], x = “z”
输出:[]
解释:“z” 没有在任何单词中出现。所以我们返回空数组。
直接遍历数组words中的每个string,然后用string的find方法找对应的子串即可,如果没找到,会返回std::string::npos:
class Solution {
public:vector<int> findWordsContaining(vector<string>& words, char x) {vector<int> ret;int index = 0;for (string &word : words){if (word.find(x) != std::string::npos){ret.push_back(index);}++index;}return ret;}
};
如果words中有n个string,每个string的平均长度为m,该算法的时间复杂度为O(m*n),空间复杂度为O(1)。
这篇关于LeetCode 2942. 查找包含给定字符的单词的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!