编写一个函数repfree,该函数以字符串s作为输入,并检查是否有任何字符出现多次。如果没有重复,函数应返回True,否则返回False
我已经试过了,但我觉得这不是一个有效的解决方法。你能推荐一个有效的代码吗,谢谢
def repfree(s):
newlist = []
for i in range(0, len(s)):
newlist.append(s[i])
newlist2 = set(newlist)
if len(newlist) == len(newlist2):
print("True")
else:
print("False")
您可以将字符串拆分为
set
并比较长度信不信由你,这个问题可以在O(1)时间内解决,因为每个足够大的字符串至少包含一个重复字符。毕竟,不同的Unicode字符的数量有限,因此一个字符串不能任意长,同时最多使用一次每个Unicode字符
例如,如果您碰巧知道字符串仅由小写字母组成,则可以执行以下操作:
否则,您可以用字符串可能包含的任何数量的字符替换
26
;e、 g.62
表示大小写字母和数字截至2020年2月,整个Unicode有137994个不同字符(Wikipedia),因此如果字符串长度为150000,则可以返回
True
,而无需搜索满足此要求的一个简单方法是使用正则表达式。你可能不允许使用它们,但是如果你可以,那么考虑这个:
相关问题 更多 >
编程相关推荐