一定要手写,最好用笔写,一定要记住不行就背住,面试不会给你时间慢慢想。
多种解法可搜索ai ,学习一定得利用ai,非常的强大
1.输出数组中第二大的数字
题目要求:输出数组中第二大的数字,如果有重复则保留所有重复值。如果不存在第二大数字,则返回空列表。
def second_largest(nums):
if len(nums) < 2:
return []
max_nums = max(nums)
# 移除max值
del_num = [num for num in nums if num != max_nums]
second_num = max(del_num)
# 测试用例
print(second_largest([2,4,3])) #[3]
2.无重复字符的最长子串
题目要求:找到字符串中无重复字符的最长子串。
def length_of_longest_str(s):
char_index = {}
max_length = 0 # 记录最长子串长度
for i, char in enumerate(s):
if char in char_index and char_index[char]>= max_length:
max_length= char_index[char] +1
char_index[char]=i
max_length = max(max_length, i - start +1)
return max_length
#测试用例
print(length_of_longest_str("abcabcbb")) #3
3.查找字符串数组中的最长公共前缀
题目要求:查找字符串数组中的最长公共前缀。
def longest_common_prefix(strs):
if not strs:
return "" # 如果字符串数组为空,返回空字符串
# 找到最短的字符串
shortest_str = min(strs, key=len)
# 遍历最短字符串的每个字符
for i in range(len(shortest_str)):
# 获取当前字符
char = shortest_str[i]
# 检查所有字符串在相同位置的字符是否相同
for other_str in strs:
if other_str[i] != char:
# 如果发现不同,返回当前已匹配的公共前缀
return shortest_str[:i]
# 如果最短字符串的所有字符都匹配,返回最短字符串
return shortest_str
# 测试用例
print(longest_common_prefix(["flower", "flow", "flight"])) # "fl"
print(longest_common_prefix(["dog", "racecar", "car"])) # ""
print(longest_common_prefix(["interspecies", "interstellar", "interstate"])) # "inters"
print(longest_common_prefix(["classroom", "class", "clash"])) # "clas"
print(longest_common_prefix(["a"])) # "a"
print(longest_common_prefix([""])) # ""
print(longest_common_prefix([])) # ""
4.给你一个列表,列表里有张三@qq.com,李四@qq.com,王老六@qq.com,我需
要提取这个列表里的所有用户名
例如张三,李四,王老六,并以列表的形式返回给我,这个怎么实现?
字符串切割
#定义电子邮件列表
emails =["张三@qq.com","李四@qq.com","王老六@qq.com"]
# 初始化一个空列表来存储用户名
usernames =[]
#遍历电子邮件列表
for email in emails:
# 使用split()方法以'@'为分隔符分割字符串,并取第一部分作为用户名
username = email.split('@')[0]
#将用户名添加到用户名列表中
usernames.append(username)
#输出用户名列表
print(usernames)
#还可使用字符串的取消字符的方法
for email in emails :
name=email.strip("@qq.com")
usernames.append(name)
print(usernames)
5.面试官:字符串操作将"I am employee"反转成"employee am I"有几种代码实现方式?
#切片
original = "I am employee"
reversed = original.split()[::-1]# 分割字符串,反转列表,再合并回字符串
print(reversed)
6.斐波那契数列是一个每个数字都是前两个数字之和的序列,通常定义为F(0) = 0,F(1)=1,
F(n) = F(n-1) + F(n-2) 对于n> 1。求F (n)。
一.递归方法:
这是最直接的方法,但效率较低,因为它会重复计算很多次相同的值。
def fibonacci_recursive(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci_recursive(n-1)+ fibonacci_recursive(n-2)
print(fibonacci_recursive(10))# 输出第10个斐波那契数
二.动态规划方法:
使用一个列表来存储已经计算过的斐波那契数,避免重复计算。
def fibonacci_dp(n):
if n<=0:
return 0
fib= [0, 1]
for i in range(2,n+1):
fib.append(fib[i-1] + fib[i-2])
return fib[n]
print(fibonacci_dp(10))# 输出第10个斐波那契数
三.迭代方法:
通过迭代的方式,逐个计算斐波那契数列的值。
def fibonacci_iterative(n):
if n <= 0:
return 0
elif n == 1:
return 1
a, b = 0, 1
for _ in range(2,n + 1):
a, b = b, a + b
return b
print(fibonacci_iterative(10))# 输出第10个斐波那契数
7.python冒泡排序
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0,n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
arr = [64, 34, 25, 12,22, 11,90]
sorted_arr = bubble_sort(arr)
print(sorted_arr)
8.编写一个程序,找出一个列表中的最大值。
def find_max(numbers):
max_num = numbers[0]
for num in numbers:
if num > max_num:
max_num = num
return max_num
print(find_max([3, 7, 2, 9, 5]))# 输出: 9
9.编写一个程序,计算一个列表中所有元素的和。
def calculate_sum(numbers):
total = 0
for num in numbers:
total += num
return total
print(calculate_sum([1, 2, 3, 4, 5])) # 输出:15
10.编写一个程序,判断一个字符串是否为回文字符串(正读和反读都一样)。
def is_palindrome(string):
reversed_string = string[::-1]
if string = = reversed_string:
return True
else:
return False
print(is_palindrome("level")) # 输出:True
print(is_palindrome("hello")) # 输出:False
11.编写一个程序,统计一个字符串中每个字符出现的次数。
def count_characters(string):
char_count = {}
for char in string:
if char in char_count:
char_count[char]+=1
else:
char_count[char] = 1
return char_count
print(count_characters("hello")) # 输出: {"h': 1, 'e': 1, 'T': 2, 'o': 1}
12.编写一个程序,找出一个列表中的所有偶数。
def find_even(numbers):
even_numbers =[]
for num in numbers:
if num % 2 == 0:
even_numbers.append(num)
return even_numbers
print(find_even([1, 2, 3, 4, 5, 6])) # 输出:[2, 4, 6]

8万+

被折叠的 条评论
为什么被折叠?



