Easy
题目描述
给定字符串数组 words 和字符串 s,判断 s 是否为 words 的首字母缩略词。
当字符串 s 可以由 words 中每个字符串的第一个字符按顺序连接形成时,s 被认为是 words 的首字母缩略词。例如,"ab" 可以由 ["apple", "banana"] 形成,但不能由 ["bear", "aardvark"] 形成。
如果 s 是 words 的首字母缩略词,返回 true,否则返回 false。
示例 1:
输入:words = ["alice","bob","charlie"], s = "abc"
输出:true
解释:单词 "alice"、"bob" 和 "charlie" 的第一个字符分别是 'a'、'b' 和 'c'。因此,s = "abc" 是首字母缩略词。
示例 2:
输入:words = ["an","apple"], s = "a"
输出:false
解释:单词 "an" 和 "apple" 的第一个字符分别是 'a' 和 'a'。
连接这些字符形成的首字母缩略词是 "aa"。
因此,s = "a" 不是首字母缩略词。
示例 3:
输入:words = ["never","gonna","give","up","on","you"], s = "ngguoy"
输出:true
解释:通过连接数组中单词的第一个字符,我们得到字符串 "ngguoy"。
因此,s = "ngguoy" 是首字母缩略词。
约束条件:
1 <= words.length <= 1001 <= words[i].length <= 101 <= s.length <= 100words[i]和s由小写英文字母组成
解题思路
这道题要求我们检查字符串 s 是否为字符串数组 words 的首字母缩略词。
思路分析:
最直观的解法是提取每个单词的首字母,构成缩略词字符串,然后与目标字符串 s 比较。具体步骤如下:
长度检查:首先检查
s的长度是否等于words数组的长度,如果不等则直接返回false。逐字符比较:遍历
words数组,取每个单词的第一个字符,与s中对应位置的字符进行比较。返回结果:如果所有字符都匹配,返回
true;否则返回false。
这种方法的优点是逻辑清晰,易于理解。我们可以选择构建完整的缩略词字符串再比较,也可以边遍历边比较,后者在空间复杂度上更优。
推荐解法:使用边遍历边比较的方式,这样可以在发现不匹配时提前退出,同时节省空间。
代码实现
class Solution {
public:
bool isAcronym(vector<string>& words, string s) {
if (words.size() != s.size()) {
return false;
}
for (int i = 0; i < words.size(); i++) {
if (words[i][0] != s[i]) {
return false;
}
}
return true;
}
};
class Solution:
def isAcronym(self, words: List[str], s: str) -> bool:
if len(words) != len(s):
return False
for i in range(len(words)):
if words[i][0] != s[i]:
return False
return True
public class Solution {
public bool IsAcronym(IList<string> words, string s) {
if (words.Count != s.Length) {
return false;
}
for (int i = 0; i < words.Count; i++) {
if (words[i][0] != s[i]) {
return false;
}
}
return true;
}
}
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;
};
复杂度分析
| 复杂度类型 | 复杂度 | 说明 |
|---|---|---|
| 时间复杂度 | O(n) | 其中 n 是 words 数组的长度,需要遍历每个单词取首字母 |
| 空间复杂度 | O(1) | 只使用常量级别的额外空间 |
相关题目
- . Word Abbreviation (Hard)