字母异位词
知识点和重点
字母异位词:字母异位词指的是由相同的字母以不同的顺序组成的单词或短语。解决这个问题需要了解字母异位词的定义和判断方法。
哈希表:使用哈希表可以有效地进行字符计数。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