到目前为止,这是最快的,甚至比
count()它快几倍,只需使用出色的mgilson计时套件即可:
s == len(s) * s[0]
在这里,所有检查都是在Python C代码中完成的,它只是:
- 分配len个字符;
- 用第一个字符填充空间;
- 比较两个字符串。
字符串越长,时间奖励就越大。但是,正如mgilson所写,它会创建字符串的副本,因此,如果您的字符串长度为数百万个符号,则可能会出现问题。
从计时结果可以看出,解决任务的最快方法通常不会为每个符号执行任何Python代码。但是,该
set()解决方案还可以在Python库的C代码中完成所有工作,但是它仍然很慢,可能是由于通过Python对象接口 *** 作字符串。
UPD: 关于空字符串大小写。如何处理它很大程度上取决于任务。如果任务是“检查字符串中的所有符号是否都相同”,
s == len(s) *s[0]则为有效答案(无符号表示错误,可以例外)。如果任务是“检查是否存在唯一的唯一符号”,则空字符串应为False,答案为
s and s ==len(s) * s[0],或者
bool(s) and s == len(s) *s[0]您是否希望接收布尔值。最后,如果我们将任务理解为“检查是否存在不同的符号”,则空字符串的结果为True,答案为
not s or s ==len(s) * s[0]。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)