- 有效的字母異位詞 (Valid Anagram) - 題號:242
題目描述:給定兩個字符串 s 和 t ,編寫一個函數來判斷 t 是否是 s 的字母異位詞。
def isAnagram(s, t):
if len(s) != len(t):
return False
char_count = [0] * 26
for char in s:
char_count[ord(char) - ord('a')] += 1
for char in t:
char_count[ord(char) - ord('a')] -= 1
if char_count[ord(char) - ord('a')] < 0:
return False
return True
- 查找常用字符 (Find Common Characters) - 題號:1002
題目描述:給定僅有小寫字母組成的字符串數組 A,返回列表中的每個字符串中都顯示的全部字符(包括重覆字符)組成的列表。
def commonChars(A):
result = []
min_freq = [float('inf')] * 26
for word in A:
freq = [0] * 26
for char in word:
freq[ord(char) - ord('a')] += 1
for i in range(26):
min_freq[i] = min(min_freq[i], freq[i])
for i in range(26):
result.extend([chr(i + ord('a'))] * min_freq[i])
return result
- 兩個數組的交集 (Intersection of Two Arrays) - 題號:349
題目描述:給定兩個數組,編寫一個函數來計算它們的交集。
def intersection(nums1, nums2):
set1 = set(nums1)
set2 = set(nums2)
return list(set1.intersection(set2))
- 快樂數 (Happy Number) - 題號:202
題目描述:編寫一個算法來判斷一個數 n 是不是快樂數。一個數是快樂的,如果按照如下方式得到的一系列數字中,最終結果為 1。
def isHappy(n):
def get_next(n):
total_sum = 0
while n > 0:
n, digit = divmod(n, 10)
total_sum += digit ** 2
return total_sum
seen = set()
while n != 1 and n not in seen:
seen.add(n)
n = get_next(n)
return n == 1
- 兩數之和 (Two Sum) - 題號:1
題目描述:給定一個整數數組 nums 和一個目標值 target,在該數組中找出和為目標值的那 兩個 整數,並返回它們的數組下標。
def twoSum(nums, target):
num_dict = {}
for i, num in enumerate(nums):
complement = target - num
if complement in num_dict:
return [num_dict[complement], i]
num_dict[num] = i
return None
- 四數相加 II (4Sum II) - 題號:454
題目描述:給定四個包含整數的數組列表 A, B, C, D ,計算有多少個元組 (i, j, k, l) 使得 A[i] + B[j] + C[k] + D[l] = 0。
def fourSumCount(A, B, C, D):
sum_ab = {}
for a in A:
for b in B:
sum_ab[a + b] = sum_ab.get(a + b, 0) + 1
count = 0
for c in C:
for d in D:
count += sum_ab.get(-(c + d), 0)
return count
- 贖金信 (Ransom Note) - 題號:383
題目描述:給定一個贖金信 (ransom) 字符串和一個雜志(magazine)字符串,判斷第一個字符串ransom能不能由第二個字符串magazines里面的字符構成。
def canConstruct(ransomNote, magazine):
from collections import Counter
return not (Counter(ransomNote) - Counter(magazine))