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