📌  相关文章
📜  检查第二个字符串是否可以由使用任意次数的第一个字符串的字符组成(1)

📅  最后修改于: 2023-12-03 15:40:35.798000             🧑  作者: Mango

问题描述

给定两个字符串 st,编写一个函数来判断 t 是否是 s 的一个字母异位词(即 t 是否可以由使用任意次数的 s 的字符组成)。

示例

输入:

s = "anagram", t = "nagaram"

输出:

True
解题思路

可以使用哈希表来解决问题。

  1. 构建一个哈希表,用来记录 s 中每个字符出现的次数。
  2. 遍历字符串 t,对于每个字符,如果在哈希表中出现,就将它的次数减一。否则将返回False。
  3. 如果遍历完字符串 t 后,哈希表中的每个值都为 0,就说明 t 可以由使用任意次数的 s 的字符组成,返回True。否则,返回False。
代码实现

Python实现:

def isAnagram(s: str, t: str) -> bool:
    if len(s) != len(t):
        return False
    hash_table = {}
    for c in s:
        if c in hash_table:
            hash_table[c] += 1
        else:
            hash_table[c] = 1
    for c in t:
        if c in hash_table:
            if hash_table[c] > 0:
                hash_table[c] -= 1
            else:
                return False
        else:
            return False
    return all(x == 0 for x in hash_table.values())
总结

本题考察哈希表的使用,根据题目意思,使用哈希表可以记录每个字符的出现次数,最后判断是否可以由使用任意次数的 s 的字符组成。时间复杂度为 $O(N)$,空间复杂度为 $O(N)$。