在华为OD技术面试中,常常会遇到关于Python语言的各种题目,特别是针对基础知识与常用的编程技巧的考察。以下是一些常见的Python相关题目,以及相关的解释和代码示例。
题目1:反转字符串
题目描述:给定一个字符串,要求反转字符串并返回结果。
代码示例:
def reverse_string(s: str) -> str:
return s[::-1]
# 测试
input_str = "Hello, World!"
result = reverse_string(input_str)
print(result) # 输出: !dlroW ,olleH
解析:在Python中,可以使用切片的方式来反转字符串。s[::-1]
表示从字符串s
的最后一个字符开始向前取,每次步长为-1,从而实现反转。
题目2:判断回文字符串
题目描述:给定一个字符串,判断是否是回文字符串(即正读和反读都一样的字符串)。
代码示例:
def is_palindrome(s: str) -> bool:
# 清理字符串,只保留字母和数字,并将其转换为小写
cleaned = ''.join(char.lower() for char in s if char.isalnum())
return cleaned == cleaned[::-1]
# 测试
input_str = "A man, a plan, a canal: Panama"
result = is_palindrome(input_str)
print(result) # 输出: True
解析:在判断回文时,需要考虑字符串中的空格、标点符号等。可以通过字符串的过滤和转换来得到一个标准的比较字符串,然后再进行回文判断。
题目3:查找数组中的重复元素
题目描述:给定一个整数数组,找出其中的重复元素。
代码示例:
def find_duplicates(nums):
seen = set()
duplicates = set()
for num in nums:
if num in seen:
duplicates.add(num)
else:
seen.add(num)
return list(duplicates)
# 测试
input_nums = [1, 2, 3, 4, 3, 2, 1]
result = find_duplicates(input_nums)
print(result) # 输出: [1, 2, 3]
解析:这里使用集合(set)来跟踪已经看到的元素,利用集合的特性(不重复存储)来找到重复的元素。
题目4:计算字符串中的单词数量
题目描述:给定一个字符串,计算其中单词的数量。
代码示例:
def count_words(s: str) -> int:
# 使用.split()方法自动处理空格
words = s.split()
return len(words)
# 测试
input_str = "Hello, my name is ChatGPT"
result = count_words(input_str)
print(result) # 输出: 6
解析:使用字符串的split()
方法可以自动处理连续的空格,并将字符串分割成单词,最后通过len()
函数计算单词数量。
总结
在华为的技术面试中,掌握常见的Python编程题目以及解决这些问题的思路十分重要。尤其是在处理字符串、列表等数据结构时,要熟练运用Python内置的方法和数据结构。以上几个示例涵盖了一些基础的字符串处理和集合操作,希望对准备技术面试的同学有所帮助。