2828-判别首字母缩略词

Raphael Liu Lv10

给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words首字母缩略词

如果可以按顺序串联 words 中每个字符串的第一个字符形成字符串 s ,则认为 swords 的首字母缩略词。例如,"ab"
可以由 ["apple", "banana"] 形成,但是无法从 ["bear", "aardvark"] 形成。

如果 swords 的首字母缩略词,返回 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 <= 100
  • 1 <= words[i].length <= 10
  • 1 <= s.length <= 100
  • words[i]s 由小写英文字母组成

请看 视频讲解

如果 words 长度和 s 长度不同,直接返回 false

如果存在 words}[i][0] \ne s[i],也返回 false

否则返回 true

[sol-Python3]
1
2
3
class Solution:
def isAcronym(self, words: List[str], s: str) -> bool:
return len(words) == len(s) and all(w[0] == c for w, c in zip(words, s))
[sol-Java]
1
2
3
4
5
6
7
8
9
10
class Solution {
public boolean isAcronym(List<String> words, String s) {
if (words.size() != s.length())
return false;
for (int i = 0; i < words.size(); i++)
if (words.get(i).charAt(0) != s.charAt(i))
return false;
return true;
}
}
[sol-C++]
1
2
3
4
5
6
7
8
9
10
11
class Solution {
public:
bool isAcronym(vector<string> &words, string s) {
if (words.size() != s.length())
return false;
for (int i = 0; i < words.size(); i++)
if (words[i][0] != s[i])
return false;
return true;
}
};
[sol-Go]
1
2
3
4
5
6
7
8
9
10
11
func isAcronym(words []string, s string) bool {
if len(words) != len(s) {
return false
}
for i, w := range words {
if w[0] != s[i] {
return false
}
}
return true
}

复杂度分析

  • 时间复杂度:\mathcal{O}(n),其中 n 为 s 的长度。
  • 空间复杂度:\mathcal{O}(1)。仅用到若干额外变量。
 Comments
On this page
2828-判别首字母缩略词