返回

LeetCode 2351. First Letter to Appear Twice

后端

LeetCode 2351. First Letter to Appear Twice 是 LeetCode Weekly Contest 303 的第一题,难度为 Eazy。这道题主要考查的是对题目的理解和计数器的使用。

题目

给你一个字符串 s,字符串 s 由小写英文字母组成。请你返回字符串 s 中第一个重复出现的字母。如果字符串 s 中没有重复出现的字母,则返回字符 ' '。

示例 1:

输入:s = "abcabc"
输出:"a"

示例 2:

输入:s = "abc"
输出:" "

解题思路:

这道题我们可以使用一个计数器来解决。我们首先创建一个字典,其中 key 是小写英文字母,value 是该字母出现的次数。然后我们遍历字符串 s,对于每个字符,我们都将其对应的计数器加 1。如果计数器大于 1,说明该字母出现了两次,我们可以直接返回该字母。如果遍历完整个字符串,都没有找到重复出现的字母,则返回字符 ' '。

代码实现:

def first_letter_to_appear_twice(s):
  """
  :type s: str
  :rtype: str
  """
  # 创建一个字典,其中 key 是小写英文字母,value 是该字母出现的次数
  char_count = {}
  for char in s:
    if char in char_count:
      char_count[char] += 1
    else:
      char_count[char] = 1

  # 遍历字符串 s,对于每个字符,我们都将其对应的计数器加 1
  for char in s:
    # 如果计数器大于 1,说明该字母出现了两次,我们可以直接返回该字母
    if char_count[char] > 1:
      return char

  # 如果遍历完整个字符串,都没有找到重复出现的字母,则返回字符 ' '
  return ' '

# 测试代码
print(first_letter_to_appear_twice("abcabc"))  # 输出:"a"
print(first_letter_to_appear_twice("abc"))  # 输出:" "

复杂度分析:

  • 时间复杂度:O(n),其中 n 是字符串 s 的长度。
  • 空间复杂度:O(1),因为我们只使用了一个字典来存储字母的出现次数。

这道题的代码实现非常简单,也很容易理解。如果你对 LeetCode 2351. First Letter to Appear Twice 这道题还有任何疑问,欢迎在评论区留言。