Python面试题二

本文介绍了两种Python编程技巧:一是不使用新数组直接反转字符数组,利用Python的变量交换特性;二是实现FizzBuzz问题,根据数字是否能被3和5整除返回特定字符串。这两个问题的解决方案简洁高效,展示了Python的灵活性。
摘要由CSDN通过智能技术生成

三、反转字符串中的字符

题目介绍:
实现一个算法来实现反转字符数组的功能。反转的要求如下:

将字符数组的字符进行反转,例如 [‘b’, ’ ', ‘a’, ‘r’] 变成 [‘r’, ‘a’, ’ ', ‘b’]。

将字符数组替换为反转后的数组。

解题思路:
常规的解法是创建一个相同长度的新数组,然后把第一个数组中的元素,按倒序放入新数组中。

但更简单的方法是:利用 Python 交换变量的特性,不需要新建数组,直接在原数组里即可完成,代码如下。

参考答案:

classReverseString(object):
def reverse(self, chars):
if chars:
            size = len(chars)
for i in range(size // 2):
                chars[i], chars[size - 1- i] = \
                    chars[size - 1- i], chars[i]
return chars

四、Fizz Buzz 经典问题
题目介绍:
给定一个整数 num,从 1 到 num 按照下面的规则返回每个数:

如果这个数被 3 整除,返回 ‘Fizz’。

如果这个数被 5 整除,返回 ‘Buzz’。

如果这个数能同时被 3 和 5 整除,返回 ‘FizzBuzz’。

如果这个数既不能被 3 也不能被 5 整除,返回这个数字的字符串格式。

解题思路:
有趣又比较简单的一道题,写一个循环即可。当数字被 3 整除时返回 ‘Fizz’,被 5 整除,返回 ‘Buzz’,同时被 3 和 5 整除,返回 ‘FizzBuzz’……代码如下。

参考答案:

classSolution(object):
def fizz_buzz(self, num):
if num isNone:
raiseTypeError('num cannot be None')
if num < 1:
raiseValueError('num cannot be less than one')
        results = []
for i in range(1, num + 1):
if i % 3== 0and i % 5== 0:
                results.append('FizzBuzz')
elif i % 3== 0:
                results.append('Fizz')
elif i % 5== 0:
                results.append('Buzz')
else:
                results.append(str(i))
return results
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值