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

104 阅读1分钟

题目 leetcode.cn/

  • 给你一个字符串数组 words 和一个字符串 pref 。
  • 返回 words **中以 pref 作为 前缀 的字符串的数目。
  • 字符串 s 的 前缀 就是  s 的任一前导连续字符串。

示例

  • 示例 1:

    • 输入: words = ["pay","attention","practice","attend"], pref = "at"
    • 输出: 2
    • 解释: 以 "at" 作为前缀的字符串有两个,分别是:"attention" 和 "attend" 。
  • 示例 2:

    • 输入: words = ["leetcode","win","loops","success"], pref = "code"
    • 输出: 0
    • 解释: 不存在以 "code" 作为前缀的字符串。

提示:

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

代码

function prefixCount(words: string[], pref: string): number {
    let sum = 0;
    let reg = new RegExp(`^${pref}`);
    for(let i = 0; i < words.length; i++){
        if(reg.test(words[i])){
            sum++
        }
    }
    return sum
};
  • 正则校验:
    • 定义一个统计结果变量和一个校验字符串是否以变量pref字符串开头的正则
    • 变量整个单词数组,对每一项都进行校验,如果校验通过,则统计结果+1
    • 直到数组中全部校验完毕,返回结果
function prefixCount(words: string[], pref: string): number {
    let sum = 0;
    for(let i = 0; i < words.length; i++){
        if(words[i].substring(0, pref.length) === pref){
            sum++
        }
    }
    return sum
};
  • 字符串截取比较:

    • 定义一个统计结果的变量,然后遍历数组
    • 对数组的每一项都截取一段字符串,长度为变量pref的长度,判断截取的字符串是否等于变量pref
    • 如果相等,则统计变量+1,直到遍历结束,返回结果
  • 当然还有官方使用的startWith方法,刚开始没想到,这里就不写了

结果

  • 正则校验:

image.png

  • 字符串截取比较:

image.png