2828. Check if a String Is an Acronym of Words
Description
Given an array of strings words and a string s, determine if s is an acronym of words.
The string s is considered an acronym of words if it can be formed by concatenating the first character of each string in words in order. For example, "ab" can be formed from ["apple", "banana"], but it can't be formed from ["bear", "aardvark"].
Return true if s is an acronym of words, and false otherwise.
Example 1:
Input: words = ["alice","bob","charlie"], s = "abc" Output: true Explanation: The first character in the words "alice", "bob", and "charlie" are 'a', 'b', and 'c', respectively. Hence, s = "abc" is the acronym.
Example 2:
Input: words = ["an","apple"], s = "a" Output: false Explanation: The first character in the words "an" and "apple" are 'a' and 'a', respectively. The acronym formed by concatenating these characters is "aa". Hence, s = "a" is not the acronym.
Example 3:
Input: words = ["never","gonna","give","up","on","you"], s = "ngguoy" Output: true Explanation: By concatenating the first character of the words in the array, we get the string "ngguoy". Hence, s = "ngguoy" is the acronym.
Constraints:
1 <= words.length <= 1001 <= words[i].length <= 101 <= s.length <= 100words[i]andsconsist of lowercase English letters.
Solutions
Solution 1: Simulation
We can iterate over each string in the array \(words\), concatenate their first letters to form a new string \(t\), and then check if \(t\) is equal to \(s\).
The time complexity is \(O(n)\), and the space complexity is \(O(n)\). Here, \(n\) is the length of the array \(words\).
1 2 3 | |
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 | |
1 2 3 | |
1 2 3 4 5 6 7 8 9 | |
Solution 2: Simulation (Space Optimization)
First, we check if the number of strings in \(words\) is equal to the length of \(s\). If not, \(s\) is definitely not an acronym of the first letters of \(words\), and we directly return \(false\).
Then, we iterate over each character in \(s\), checking if it is equal to the first letter of the corresponding string in \(words\). If not, \(s\) is definitely not an acronym of the first letters of \(words\), and we directly return \(false\).
After the iteration, if we haven't returned \(false\), then \(s\) is an acronym of the first letters of \(words\), and we return \(true\).
The time complexity is \(O(n)\), where \(n\) is the length of the array \(words\). The space complexity is \(O(1)\).
1 2 3 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |