python练习题1

7 阅读1分钟

题目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))