Problem

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 ifs is an acronym ofwords , andfalse otherwise.

Examples

Example 1

1
2
3
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

1
2
3
4
5
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

1
2
3
4
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 <= 100
  • 1 <= words[i].length <= 10
  • 1 <= s.length <= 100
  • words[i] and s consist of lowercase English letters.

Solution

Method 1 – Direct Character Comparison

Intuition: To check if a string is an acronym of a list of words, compare the string to the concatenation of the first character of each word in order. If they match, return true; otherwise, return false.

Approach:

  1. If the length of s is not equal to the number of words, return false.
  2. For each word, compare its first character to the corresponding character in s.
  3. If all characters match, return true; otherwise, return false.

Code

1
2
3
4
5
6
7
8
9
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;
    }
}
1
2
3
4
5
6
7
8
class Solution:
    def isAcronym(self, words: list[str], s: str) -> bool:
        if len(words) != len(s):
            return False
        for i, w in enumerate(words):
            if w[0] != s[i]:
                return False
        return True

Complexity

  • ⏰ Time complexity: O(n), where n is the number of words.
  • 🧺 Space complexity: O(1)