题目1:一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
示例: 数组1:[1,4,1,6],返回值:[4,6] 数组2:[1,2,3,3,2,9],返回值:[1,9]
python
def fine_one(nums):
dc = {} # 空字典,存放{数字:出现次数}
for num in nums:
if num not in dc: # 当数字num不在dc中
dc[num] = 1 # 数字num第一次出现
else: # dc已经有num了
dc[num] += 1 # num次数=1
result = [] # 存放结果
for key,value in dc.items(): # 寻找只出现一次的数字
if value == 1:
result.append(key)
return result
# 测试用例
nums1 = [1,4,1,6]
nums2 = [1,2,3,3,2,9]
print(f"数组{nums1}的结果为{fine_one(nums1)}")
print(f"数组{nums2}的结果为{fine_one(nums2)}")
题目2:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。
示例: strs1 = ["flower", "flow", "flight"] result="fl" strs2 = ["dog", "racecar", "car"] result=""
python
def find_longgest(strs):
if not strs:
return ""
for i in range(len(strs[0])): # 依次遍历第一个元素的每个字符
for str in strs[1:]:
if strs[0][i] != str[i] or i >= len(str):
return strs[0][:i]
return strs[0]
# 测试用例
strs1 = ["flower", "flow", "flight"]
strs2 = ["dog", "racecar", "car"]
print(find_longgest(strs1))
print(find_longgest(strs2))