题目1:写一个函数,输入一个字符串,返回该字符串中出现次数最多的字符及其出现次数。
答案1:
def most_frequent_char(s):
char_count = {}
for char in s:
if char in char_count:
char_count[char] += 1
else:
char_count[char] = 1
max_count = max(char_count.values())
most_frequent_char = [char for char, count in char_count.items() if count == max_count]
return most_frequent_char, max_count
s = "abccdefggg"
result = most_frequent_char(s)
print(result)
解题思路:遍历字符串,使用一个字典来统计每个字符出现的次数,然后找出出现次数最多的字符及其出现次数。
题目2:写一个函数,判断一个字符串是否是回文串(忽略大小写和非字母字符)。
答案2:
def is_palindrome(s):
s = ''.join(char.lower() for char in s if char.isalnum())
return s == s[::-1]
s = "A man, a plan, a canal, Panama"
result = is_palindrome(s)
print(result)
解题思路:先将字符串中的非字母字符去除并转换为小写,然后判断反转后的字符串是否和原字符串相等。
题目3:写一个函数,输入一个整数数组和一个目标值,找出数组中和为目标值的两个数的索引。
答案3:
def two_sum(nums, target):
num_dict = {}
for i, num in enumerate(nums):
complement = target - num
if complement in num_dict:
return [num_dict[complement], i]
num_dict[num] = i
nums = [2, 7, 11, 15]
target = 9
result = two_sum(nums, target)
print(result)
解题思路:遍历数组,使用一个字典来存储每个数及其索引,同时查找是否存在与当前数相加等于目标值的数。
题目4:实现一个简单的计算器,可以进行加减乘除四则运算,输入为一个包含数字和运算符的字符串。
答案4:
def calculator(s):
stack = []
num = 0
sign = '+'
for i in range(len(s)):
if s[i].isdigit():
num = num * 10 + int(s[i])
if (not s[i].isdigit() and s[i] != ' ') or i == len(s) - 1:
if sign == '+':
stack.append(num)
elif sign == '-':
stack.append(-num)
elif sign == '*':
stack[-1] *= num
elif sign == '/':
stack[-1] = int(stack[-1] / num)
sign = s[i]
num = 0
return sum(stack)
s = "3+2*2"
result = calculator(s)
print(result)
解题思路:使用栈来保存数字,遍历字符串,遇到数字则累加,遇到运算符则根据前一个运算符进行相应计算。
题目5:实现一个函数,输入一个整数数组,返回一个新数组,新数组中的每个元素为原数组中除了自身以外所有元素的乘积。
答案5:
def product_except_self(nums):
n = len(nums)
output = [1] * n
left_product = 1
right_product = 1
for i in range(n):
output[i] *= left_product
left_product *= nums[i]
for i in range(n-1, -1, -1):
output[i] *= right_product
right_product *= nums[i]
return output
nums = [1, 2, 3, 4]
result = product_except_self(nums)
print(result)
解题思路:使用两个额外的数组来保存每个元素左边和右边的乘积,然后将左右乘积相乘得到最终结果。