哈希表结构的应用,代码随想录打卡day06

字母异位词

题目地址

知识点和重点
字母异位词:字母异位词指的是由相同的字母以不同的顺序组成的单词或短语。解决这个问题需要了解字母异位词的定义和判断方法。
哈希表:使用哈希表可以有效地进行字符计数。Python 中可以使用字典来模拟哈希表。
字符串操作:需要熟悉 Python 字符串的常见操作,如遍历字符串、切片等。
计数器:可以使用计数器来统计字符串中每个字符的出现次数。

代码实现:

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        record = [0]* 26
        for i in s:
            record[ord(i) - ord('a')] +=1
        for j in t:
            record[ord(j)-ord('a')]-=1
        for k in record:
            if k != 0:
                return False
        return True

快乐数

题目地址

知识点和重点
快慢指针(Floyd 判圈算法):判断循环的重要技巧之一。用于判断链表中是否存在环,但同样适用于此题。如果存在循环,那么必然会在某一步中出现相同的数字序列。
数学运算:需要对数字进行平方和等数学运算,熟悉 Python 中的整数操作。
循环检测:需要检测是否出现了循环,如果出现循环且不为 1,则不是快乐数。
代码实现:

def isHappy(n: int) -> bool:
    def get_next(num):
        # 计算数字 num 的每位数字的平方和
        total_sum = 0
        while num > 0:
            num, digit = divmod(num, 10)  # 获取当前数字的个位数
            total_sum += digit ** 2
        return total_sum

    slow = fast = n
    while True:
        slow = get_next(slow)  # 慢指针每次计算一次
        fast = get_next(get_next(fast))  # 快指针每次计算两次

        if slow == fast:  # 如果快慢指针相遇,则出现了循环
            break

    return slow == 1  # 如果最终慢指针为 1,则是快乐数,否则不是

# 示例
n = 19
print(isHappy(n))  # 输出 True

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值