三、反转字符串中的字符
题目介绍:
实现一个算法来实现反转字符数组的功能。反转的要求如下:
将字符数组的字符进行反转,例如 [‘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