python面试代码题

以下是一些常见的Python面试代码题:

反转字符串

给定一个字符串,编写一个函数来反转它。

示例:

输入: “hello”
输出: “olleh”

代码:

def reverse_string(s):
return s[::-1]

判断回文字符串

给定一个字符串,编写一个函数来判断它是否是回文字符串。回文字符串是指正着读和反着读都一样的字符串。

示例:

输入: “racecar”
输出: True

输入: “hello”
输出: False

代码:

def is_palindrome(s):
return s == s[::-1]

找到两个数组的交集

给定两个数组,编写一个函数来计算它们的交集。

示例:

输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]

代码:

def intersection(nums1, nums2):
return list(set(nums1) & set(nums2))

实现快速排序

给定一个数组,编写一个函数来实现快速排序。

示例:

输入: [3,2,1,5,6,4]
输出: [1,2,3,4,5,6]

代码:

def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)

实现二分查找

给定一个有序数组和一个目标值,编写一个函数来实现二分查找。

示例:

输入: nums = [1,2,3,4,5,6], target = 4
输出: 3

输入: nums = [1,2,3,4,5,6], target = 7
输出: -1

代码:

def binary_search(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1

实现LRU缓存机制

给定一个缓存大小,实现LRU缓存机制。LRU缓存机制是指,当缓存满时,删除最近最少使用的数据,以便为新数据腾出空间。

示例:

输入: cache_size = 2
cache = LRUCache(cache_size)

cache.put(1, 1)
cache.put(2, 2)
cache.get(1) # 返回 1
cache.put(3, 3) # 删除 key 2
cache.get(2) # 返回 -1
cache.put(4, 4) # 删除 key 1
cache.get(1) # 返回 -1
cache.get(3) # 返回 3
cache.get(4) # 返回 4

代码:

class LRUCache:

def __init__(self, capacity: int):
    self.capacity = capacity
    self.cache = {}
    self.order = []

def get(self, key: int) -> int:
    if key in self.cache:
        self.order.remove(key)
        self.order.append(key)
        return self.cache[key]
    else:
        return -1

def put(self, key: int, value: int) -> None:
    if key in self.cache:
        self.order.remove(key)
    elif len(self.cache) == self.capacity:
        del self.cache[self.order[0]]
        self.order.pop(0)
    self.cache[key] = value
    self.order.append(key)