说在前面
🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。
题目描述
给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words 的 首字母缩略词 。
如果可以按顺序串联 words 中每个字符串的第一个字符形成字符串 s ,则认为 s 是 words 的首字母缩略词。例如,"ab" 可以由 ["apple", "banana"] 形成,但是无法从 ["bear", "aardvark"] 形成。
如果 s 是 words 的首字母缩略词,返回 true **;否则,返回 **false 。
示例 1:
输入: words = ["alice","bob","charlie"], s = "abc"
输出: true
解释: words 中 "alice"、"bob" 和 "charlie" 的第一个字符分别是 'a'、'b' 和 'c'。因此,s = "abc" 是首字母缩略词。
示例 2:
输入: words = ["an","apple"], s = "a"
输出: false
解释: words 中 "an" 和 "apple" 的第一个字符分别是 'a' 和 'a'。
串联这些字符形成的首字母缩略词是 "aa" 。
因此,s = "a" 不是首字母缩略词。
示例 3:
输入: words = ["never","gonna","give","up","on","you"], s = "ngguoy"
输出: true
解释: 串联数组 words 中每个字符串的第一个字符,得到字符串 "ngguoy" 。
因此,s = "ngguoy" 是首字母缩略词。
提示:
1 <= words.length <= 1001 <= words[i].length <= 101 <= s.length <= 100words[i]和s由小写英文字母组成
解题思路
首先,函数检查
words数组的长度是否与字符串s的长度相同。如果不同,说明s不可能是由words中所有单词的首字母组成的缩写,因此直接返回false。如果长度相同,函数进入一个
for循环,遍历words数组中的每个单词和字符串s中的每个字符。在循环中,函数比较
words数组中第i个单词的第一个字符(words[i][0])与字符串s中的第i个字符(s[i])。如果这两个字符不相等,说明s不是由words中的单词首字母组成的缩写,函数返回false。如果所有单词的首字母都与
s中对应的字符相匹配,循环结束后,函数返回true,表示s是words的缩写。
AC代码
/**
* @param {string[]} words
* @param {string} s
* @return {boolean}
*/
var isAcronym = function (words, s) {
if (words.length !== s.length) return false;
for (let i = 0; i < words.length; i++) {
if (words[i][0] !== s[i]) return false;
}
return true;
};
公众号
关注公众号『前端也能这么有趣』,获取更多有趣内容。
说在后面
🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『
前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。