携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天,点击查看活动详情
题目描述
给你一个字符串 s 和一个字符串数组 words ,请你判断 s 是否为 words 的 前缀字符串 。
字符串 s 要成为 words 的 前缀字符串 ,需要满足:s 可以由 words 中的前 k(k 为 正数 )个字符串按顺序相连得到,且 k 不超过 words.length 。
如果 s 是 words 的 前缀字符串 ,返回 true ;否则,返回 false 。
来源:力扣(LeetCode)
- 示例 1
输入:s = "iloveleetcode", words = ["i","love","leetcode","apples"]
输出:true
解释:
s 可以由 "i"、"love" 和 "leetcode" 相连得到。
- 示例 2
输入:s = "iloveleetcode", words = ["apples","i","love","leetcode"]
输出:false
解释:
数组的前缀相连无法得到 s 。
提示:
- 1 <= words.length <= 100
- 1 <= words[i].length <= 20
- 1 <= s.length <= 1000
- words[i] 和 s 仅由小写英文字母组成
思路分析
根据题意可知,题目给出一个字符串 s 和一个字符串数组 words,需要我们判断 s 是否为 words 的 前缀字符串。
实际上就是要我们判断字符串数组words的前k个字符串拼接在一起,看是否等于s,若是等于就返回true,否则就返回false。
首先声明一个变量strs,存储我们的目的字符串;利用for of循环字符串数组words,可以取到数组的每个元素,每次循环中,都把当前的元素拼接在strs中,然后判断当前的strs字符是否等于字符串s,若是等于就可以return true出去,若是不等于就继续循环,进入下一次循环,继续拼接字符串,再判断是否有strs会等于字符串s,循环如此操作,直到有相等的字符串strs出现;若是循环结束,还是没有就返回false。那么,这个字符串就不是这个数组的前缀了。
AC代码
function solution(s, words) {
let strs = '';
for(let item of words) {
strs += item;
if(strs === s) {
console.log(true)
return true;
}
}
console.log(false)
return false;
}
let s = "iloveleetcode", words = ["i","love","leetcode","apples"]
solution(s, words);