跳至主要內容

2185. 统计包含给定前缀的字符串


2185. 统计包含给定前缀的字符串

🟢   🔖  数组 字符串 字符串匹配  🔗 力扣open in new window LeetCodeopen in new window

题目

You are given an array of strings words and a string pref.

Return the number of strings inwords that containpref as aprefix.

A prefix of a string s is any leading contiguous substring of s.

Example 1:

Input: words = ["pay","at tention","practice","at tend"], pref = "at"

Output: 2

Explanation: The 2 strings that contain "at" as a prefix are: "at tention" and "at tend".

Example 2:

Input: words = ["leetcode","win","loops","success"], pref = "code"

Output: 0

Explanation: There are no strings that contain "code" as a prefix.

Constraints:

  • 1 <= words.length <= 100
  • 1 <= words[i].length, pref.length <= 100
  • words[i] and pref consist of lowercase English letters.

题目大意

给你一个字符串数组 words 和一个字符串 pref

返回 words 中以 pref 作为 前缀 的字符串的数目。

字符串 s前缀 就是 s 的任一前导连续字符串。

示例 1:

输入: words = ["pay","at tention","practice","at tend"], pref = "at"

输出: 2

解释: 以 "at" 作为前缀的字符串有两个,分别是:"at tention" 和 "at tend" 。

示例 2:

输入: words = ["leetcode","win","loops","success"], pref = "code"

输出: 0

解释: 不存在以 "code" 作为前缀的字符串。

提示:

  • 1 <= words.length <= 100
  • 1 <= words[i].length, pref.length <= 100
  • words[i]pref 由小写英文字母组成

解题思路

  1. 初始化计数器count 用于统计满足条件的单词数量。
  2. 遍历单词:使用 for...of 遍历 words 中的每个单词。
  3. 检查前缀:使用 startsWith 方法判断单词是否以 pref 开头。
  4. 更新计数器:如果满足条件,计数器 count 增加。
  5. 返回结果:最后返回满足条件的单词数量。

复杂度分析

  • 时间复杂度O(m * n),其中 mwords 的长度,npref 的长度,对于每个单词,startsWith 方法最多需要检查前缀的长度 n
  • 空间复杂度O(1),只使用了一个计数器变量,没有额外的存储需求。

代码

/**
 * @param {string[]} words
 * @param {string} pref
 * @return {number}
 */
var prefixCount = function (words, pref) {
	let count = 0; // 初始化计数器
	for (let word of words) {
		// 遍历每个单词
		if (word.startsWith(pref)) {
			// 检查是否以 pref 为前缀
			count++; // 如果满足条件,计数器 +1
		}
	}
	return count; // 返回最终计数结果
};

相关题目

题号标题题解标签难度力扣
1455检查单词是否为句中其他单词的前缀[✓]双指针 字符串 字符串匹配🟢🀄️open in new window 🔗open in new window
2255统计是给定字符串前缀的字符串数目[✓]数组 字符串🟢🀄️open in new window 🔗open in new window