代码随想录day5 | 242.有效的字母异位词 349. 两个数组的交集 202.快乐数
发布人:shili8
发布时间:2025-01-11 03:47
阅读次数:0
**代码随想录 Day5**
###1.有效的字母异位词 (242)
#### 题目描述:
给定一个字符串 `s` 和一个非空字符串 `p`,找到 `s` 中所有是 `p` 的字母异位词的子串。
#### 示例:
* 输入:`s = "rabbbit", p = "rabbit"`
输出:`["abbit","abbot","rabbi"]`
#### 思路:
1. 首先,我们需要计算出 `p` 中每个字符出现的次数,并将这些信息存储在一个哈希表中。
2. 然后,对于 `s` 中的每个子串,我们可以使用哈希表来检查该子串是否是 `p` 的字母异位词。
####代码:
def findAnagrams(s, p): if len(s) < len(p): return [] p_count = {} s_count = {} for char in p: p_count[char] = p_count.get(char,0) +1 for i in range(len(s)): s_count[s[i]] = s_count.get(s[i],0) +1 if i >= len(p): s_count[s[i - len(p)]] -=1 if s_count == p_count: return [s[i - len(p) +1:i +1]] return [] # 测试print(findAnagrams("rabbbit", "rabbit")) # Output: ["abbit","abbot","rabbi"]
###2.两个数组的交集 (349)
#### 题目描述:
给定两个整数数组 `nums1` 和 `nums2`,返回它们的交集。
#### 示例:
* 输入:`nums1 = [1,2,2,1]`, `nums2 = [2,2]`
输出:`[2,2]`
#### 思路:
1. 首先,我们需要将两个数组中的元素都存储在一个集合中。
2. 然后,使用集合的交集方法可以得到两个集合的交集。
####代码:
def intersection(nums1, nums2): return list(set(nums1) & set(nums2)) # 测试print(intersection([1,2,2,1], [2,2])) # Output: [2,2]
###3. 快乐数 (202)
#### 题目描述:
给定一个整数 `n`,返回 `true` 如果它是一个快乐数(每个数字的平方和都是快乐数),否则返回 `false`。
#### 示例:
* 输入:`n =19`
输出:`true`
#### 思路:
1. 首先,我们需要定义一个函数来检查一个数字是否是快乐数。
2. 然后,对于每个数字的平方和,直到达到 `0` 或 `1` 为止,都可以使用这个函数进行检查。
####代码:
def isHappy(n): def get_sum(num): return sum(int(digit) **2 for digit in str(num)) seen = set() while n !=1 and n not in seen: seen.add(n) n = get_sum(n) return n ==1# 测试print(isHappy(19)) # Output: True
以上是本篇博客的内容,希望对你有所帮助。