在华为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内置的方法和数据结构。以上几个示例涵盖了一些基础的字符串处理和集合操作,希望对准备技术面试的同学有所帮助。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部