像梦一样奔驰|100 道 Python 算法题及答案集合,拿去刷


像梦一样奔驰|100 道 Python 算法题及答案集合,拿去刷看书 , 看视频都可以帮助你学习代码 , 但都只是辅助作用 , 学好 Python , 最重要的还是 多敲代码 , 多刷题 。
不知道怎么找题刷题的小伙伴 , 可以看看我们今天带来的《Python 百题大冲关》 。 覆盖了基本语法 , 数据结构 , 算法等多个方面 , 并附有答案 。
100 道 Python 练习题 , 刷起来!!!
像梦一样奔驰|100 道 Python 算法题及答案集合,拿去刷以下是前四道题目:
一、确定字符串是否包含唯一字符题目介绍:
实现一个算法:识别一个字符串中 , 是否包含唯一的字符 。

  • 如果字符串中的字符都是唯一的 , 则返回 True , 如 '123' 。
  • 如果字符串中的字符有重复 , 则返回 False , 如 '1223' 。
考核点:集合的用法:set()
解题思路:
看到这个题目 , 你的第一反应可能是:先把字符串中每个字符都拆分出来 , 放入一个列表 , 再统计列表中是否有数量为 1 的字符 。 但这么做不但费时 , 而且要循环多次 , 效率极低 , 有一个方法可以让你超过 99 % 的面试者:
记得 Python 的 Set (集合) 概念吗?在集合中 , 所有的元素都是唯一的 。 你可以使用 set() 方法将字符串、列表等任何「可迭代对象」转换为集合 , 转换后会删除重复的元素 , 继而长度会发生变化 。
所以 , 我们只需要将字符串转换为集合 , 然后比较转换前后的长度即可 , 代码如下 。
参考答案:
class UniqueChars(object):def has_unique_chars(self, string):if string is None:return Falsereturn len(set(string)) == len(string)二、确定字符串是否是另一个的排列题目介绍:
实现一个算法来识别一个字符串 str2 是否是另一个字符串 str1 的排列 。 排列的解释如下:
  • 如果将 str1 的字符拆分开 , 重新排列后再拼接起来 , 能够得到 str2, 那么就说字符串 str2 是字符串 str1 的排列 。 例如:123 是 321 的排列 , abc 是 cba 的排列 。
  • 如果 str2 字符串是 str1 字符串的排列 , 则返回 True;反之则返回 False;
考核点:sorted()方法
解题思路:
一样是看起来复杂 , 但只需一行核心代码就能搞定的题目 。 在其他语言中 , 你可能要手动写一个排序算法 , 然后比较两个字符串排序后是否一样 。 但 Python 自带的 sorted() 方法 , 可以自动对所有可迭代的对象进行排序操作 。
参考答案:
class Permutations(object):def is_permutation(self, str1, str2):if str1 is None or str2 is None:return Falsereturn sorted(str1) == sorted(str2)附加知识点:
sort() 和 sorted() 的区别:sort() 应用在 list 列表中 , 而 sorted() 可以对所有可迭代的对象进行排序操作 。
三、反转字符串中的字符题目介绍:
实现一个算法来实现反转字符数组的功能 。 反转的要求如下:
  • 将字符数组的字符进行反转 , 例如 ['b', ' ', 'a', 'r'] 变成 ['r', 'a', ' ', 'b'] 。
  • 将字符数组替换为反转后的数组 。
考核点:使用 a,b = b,a 交换变量
解题思路:
常规的解法是创建一个相同长度的新数组 , 然后把第一个数组中的元素 , 按倒序放入新数组中 。 但更简单的方法是:利用 Python 交换变量的特性 , 不需要新建数组 , 直接在原数组里即可完成 , 代码如下 。
参考答案:
class ReverseString(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


推荐阅读