开启掘金成长之旅!这是我参与「掘金日新计划 · 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);