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

115 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情

题目描述

给你一个字符串数组 words 和一个字符串 pref 。
返回 words 中以 pref 作为 前缀 的字符串的数目。
字符串 s 的 前缀 就是  s 的任一前导连续字符串。
来源:力扣(LeetCode)

  • 示例 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 由小写英文字母组成

思路分析

根据题意可知,题目给出一个字符串数组words和一个字符串pref,找出字符串pref作为字符串数组words里面的元素的前缀的个数。什么是前缀字符串呢?就是一个字符串(一个字母或者多个字母组成的)是另外一个字符串的组成部分,并且必须是最前面的 ,如果是出现在中间或者在字符串的后面则不算是前缀字符串。
这道题目难度不大,可以说是很简单的。js有个方法indexOf可以匹配字符串,若是完全匹配就返回该字符串的下标,若是匹配到的下标是0,那不就证明该字符串是在最前面吗,那就它就是前缀字符串。声明一个变量total,储存符合结果的个数。循环数组words,拿字符串pref利用方法indexOf在循环项判断它的下标是多少若是等于0,那就符合了,total就累加一,若是-1,那就证明没在循环项中出现,或者大于0,就证明是在后面或者中间,反正不是最前面;直至循环结束,total的数量就是我们想要的前缀字符串数量。

AC代码

function solution(words, pref) {
    let total = 0;
    for(let item of words) {
        if(item.indexOf(pref) === 0) {
            total+=1;
        }
    }
    console.log(total);
}
let words = ["pay","attention","practice","attend"], pref = "at"
solution(words, pref);