python百题大冲关
Posted 胖虎是只mao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python百题大冲关相关的知识,希望对你有一定的参考价值。
参考答案仓库:https://github.com/Shallow22/python-100
1. 实现一个算法来识别一个字符串的字符是否是唯一的。
挑战内容
本次挑战中,你需要在 unique_chars.py 文件中补充函数 has_unique_chars 的空缺部分。
has_unique_chars 函数接受一个参数,string 用于指定传入的字符串;
has_unique_chars 函数输出一个布尔值,即 True 或者 False。
你需要补充 has_unique_chars 函数,使其可以识别传入的 string 字符串的字符是否是唯一的,即有没有重复的字符。要求如下:
如果传入字符串的字符是唯一的,则返回 True;
如果传入字符串的字符是有重复的,则返回 False;
如果传入的字符串为 None,也返回 False。
我的代码:
class UniqueChars(object):
def has_unique_chars(self, string):
if string is None:
return False
else:
if len(string) > len(set(string)):
return False
else:
return True
官方代码:
class UniqueChars(object):
def has_unique_chars(self, string):
if string is None:
return False
return len(set(string)) == len(string)
2. 确定字符串是否是另一个的排列
挑战介绍
实现一个算法来识别一个字符串 str2 是否是另一个字符串 str1 的排列。
排列的解释如下:
如果将 str1 的字符拆分开,重新排列后再拼接起来,能够得到 str2 ,那么就说字符串 str2 是字符串 str1 的排列。
挑战内容
本次挑战中,你需要在 permutation.py 文件中补充函数 is_permutation 的空缺部分。
is_permutation 函数接受两个参数,str1,str2 用于指定传入的两个字符串;
is_permutation 函数输出一个布尔值,即 True 或者 False。
你需要补充 is_permutation 函数,使其可以识别 str2 字符串是否是 str1 字符串的排列。要求如下:
如果 str2 字符串是 str1 字符串的排列,则返回 True;
如果 str2 字符串不是 str1 字符串的排列,则返回 False;
如果传入的字符串有 None,或者有空字符串,则返回 False。
class Permutations(object):
def is_permutation(self, str1, str2):
if str1 is None or str2 is None:
return False
return sorted(str1) == sorted(str2)
# 判断排序后是否一样
3. 确定字符串是否是另一个的旋转
挑战介绍
实现一个算法来识别一个字符串 s2 是否是另一个字符串 s1 的旋转。
旋转的解释如下:
如果将 s1 从某个位置断开,拆分成两个字符串(可能有一个为空字符串),再将这两个字符串调换顺序后拼接起来,能够得到 s2 ,那么说字符串 s2 是字符串 s1 的旋转。
挑战内容
本次挑战中,你需要在 rotation.py 文件中补充函数 is_substring 及函数 is_rotation 的空缺部分。
is_substring 函数接受两个参数,s1,s2 用于指定传入的两个字符串;
is_substring 函数用于判断传入的一个字符串是否是另一个的子字符串,它需要返回一个布尔值。
is_rotation 函数接受两个参数,s1,s2 用于指定传入的两个字符串;
is_rotation 函数需调用 is_substring 函数,但仅可调用一次;
is_rotation 函数输出一个布尔值,即 True 或者 False。
你需要补充 is_substring 函数及 is_rotation 函数,使 is_rotation 函数可以识别传入的 s2 字符串是否是 s1 字符串的旋转。要求如下:
如果 s2 字符串是 s1 字符串的旋转,则返回 True;
如果 s2 字符串不是 s1 字符串的旋转,则返回 False;
如果传入的字符串有一个是 None 或者空字符,但另外一个不是时,也返回 False。
class Rotation(object):
def is_substring(self, s1, s2):
return s1 in s2
def is_rotation(self, s1, s2):
if s1 is None or s2 is None:
return False
if len(s1) != len(s2):
return False
return self.is_substring(s1, s2+s2)
# s2 + s2 可以让s1 永远都在s2中,因为是旋转
以上是关于python百题大冲关的主要内容,如果未能解决你的问题,请参考以下文章