2828.判别首字母缩略词

【LetMeFly】2828.判别首字母缩略词

力扣题目链接:https://leetcode.cn/problems/check-if-a-string-is-an-acronym-of-words/

给你一个字符串数组 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 由小写英文字母组成

方法一:模拟(遍历)

首先看字符串和单词数组是否等长,若不等长直接返回false

接着枚举字符串的每一位,如果这个字符与对应单词的首字母不同,则返回false

遍历完成后,返回true

  • 时间复杂度$O(len(words) + len(s))$
  • 空间复杂度$O(1)$

AC代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
bool isAcronym(vector<string>& words, string s) {
if (s.size() != words.size()) {
return false;
}
for (int i = 0; i < s.size(); i++) {
if (s[i] != words[i][0]) {
return false;
}
}
return true;
}
};

Python

1
2
3
4
5
6
7
8
9
10
# from typing import List

class Solution:
def isAcronym(self, words: List[str], s: str) -> bool:
if len(s) != len(words):
return False
for i in range(len(s)):
if s[i] != words[i][0]:
return False
return True

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/135106811


2828.判别首字母缩略词
https://blog.letmefly.xyz/2023/12/20/LeetCode 2828.判别首字母缩略词/
作者
Tisfy
发布于
2023年12月20日
许可协议