创建空数组
字符串的遍历循环
ord()函数
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
record = [0] * 26
for i in s:
#并不需要记住字符a的ASCII,只要求出一个相对数值就可以了
record[ord(i) - ord("a")] += 1
for i in t:
record[ord(i) - ord("a")] -= 1
for i in range(26):
if record[i] != 0:
#record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符。
return False
return True
字典的使用
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
val_dict = {}
ans = []
for num in nums1:
val_dict[num] = 1
for num in nums2:
if num in val_dict.keys() and val_dict[num] == 1:
ans.append(num)
val_dict[num] = 0
return ans
赋值语句一定要注意先后顺序
数值各个位上的单数操作要熟悉
class Solution:
def isHappy(self, n: int) -> bool:
def caculate(sum):
c = 0
a = sum
while(a != 0):
b = a%10
a = a//10
c = c + b**2
return c
s = {n}
while True:
n = caculate(n)
if(n in s and n == 1):
return True
elif(n in s and n != 1):
return False
else:
s.add(n)
想想与双循环的暴力解法相比,能否用哈希来改进。
Python enumerate() 函数 | 菜鸟教程 (runoob.com)来在循环中同时获取数组的位置和数值。
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
s = set(nums)
for i in range(len(nums)):
if target-nums[i] in s:
for j in range(i+1,len(nums)):
if nums[j] == target-nums[i] and i!=j:
return [i,j]