统计是给定字符串前缀的字符串数目

160 阅读2分钟

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

题目描述

给你一个字符串数组 words 和一个字符串 s ,其中 words[i] 和 s 只包含 小写英文字母 。
请你返回 words 中是字符串 s 前缀 的 字符串数目 。
一个字符串的 前缀 是出现在字符串开头的子字符串。子字符串 是一个字符串中的连续一段字符序列。
来源:力扣(LeetCode)

  • 示例 1
输入:words = ["a","b","c","ab","bc","abc"], s = "abc"
输出:3
解释:
words 中是 s = "abc" 前缀的字符串为:
"a" ,"ab" 和 "abc" 。
所以 words 中是字符串 s 前缀的字符串数目为 3 。
  • 示例 2
输入:words = ["a","a"], s = "aa"
输出:2
解释:
两个字符串都是 s 的前缀。
注意,相同的字符串可能在 words 中出现多次,它们应该被计数多次。

提示:

  • 1 <= words.length <= 1000
  • 1 <= words[i].length, s.length <= 10
  • words[i] 和 s 只 包含小写英文字母。

思路分析

根据题意可知,题目给出了一个数组字符串words和一个字符串s,所有的字符串都是小写字母组成。需要我们在words数组中找出属于字符串s的前缀,并计算出数量。
对于数组,一看到肯定是要把它循环的。首先,声明一个index变量,用来存储words数组中符合字符串s前缀字符串的个数。循环整个字符串数组words,取到里面的每个元素,利用字符串的方法indexOf()判断当前循环项是否在字符串s中,若存在字符串s当中,也能知道当前循环项在字符串s中的位置,若是返回的是0,那么就可以证明当前循环项就是字符串s的前缀字符串了,只要符合这个条件,index就可以加一,直至循环结束,index的数量就是最后的结果。

AC代码

function solution(words, s) {
    let index = 0;
    for(let item of words) {
        if(s.indexOf(item) === 0) {
            index += 1;
            console.log(index);
            console.log('1234')
        }
    }
};
let words = ["a","b","c","ab","bc","abcd"], s = "abc";
 solution(words, s);