当前位置: 首页 > 面试题库 >

有效地检查字符串是否由Python中的一个字符组成

东郭思远
2023-03-14
问题内容

一种有效的方法来检查sPython中的字符串是否仅包含一个字符,例如'A'?像all_equal(s, 'A')这样的行为:

all_equal("AAAAA", "A") = True

all_equal("AAAAAAAAAAA", "A") = True

all_equal("AAAAAfAAAAA", "A") = False

两种看似效率低下的方法是:首先将字符串转换为列表并检查每个元素,其次使用正则表达式。有没有更有效的方法,或者这些是Python中最好的方法?谢谢。


问题答案:

到目前为止,这是最快的,甚至比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]



 类似资料:
  • 本文向大家介绍检查字符串在Python中是否有效JSON,包括了检查字符串在Python中是否有效JSON的使用技巧和注意事项,需要的朋友参考一下 JSON是一种文本格式,用于在各种计算机程序之间轻松交换数据。它具有Python可以验证的特定格式。在本文中,我们将考虑一个字符串,并使用JSON模块验证该字符串是否表示有效的JSON格式。 创建JSON对象 json模块具有称为load的方法。它加载

  • 问题内容: 如何检查数组中的任何字符串是否在另一个字符串中? 喜欢: 该代码行不通,只是为了展示我想要实现的目标。 问题答案: 你可以使用: 同样,要检查是否找到了列表中的所有字符串,请使用all代替any。

  • 例如: 字符串1=helloworld字符串2=asdfuvjerhelloworld 这应该是真的。 另一个例子:字符串1=helloworld字符串2=lshewodxzr 这也应该是真的。 所以我正在研究如何创建一个方法,它将返回一个布尔值,检查第二个字符串是否包含第一个字符串中的字母。在第二个示例中,string2只有一次字母l,尽管字母l在string1中出现了三次,但仍然返回true。

  • rank ▲ ✰ vote url 41 487 108 705 url 检查一个字符串是否是一个数字 如果一个字符串可以被看做一个数字那么有什么好的方法可以检测出来? 我能想到的方法: def is_number(s): try: float(s) return True except ValueError: return Fals

  • 我想删除字符串末尾的所有数字和符号。得到: 我可以剥离数字,但不能剥离。我该怎么做? 这是我到目前为止的代码:

  • 我有两个字符串,string1和string2。我想检查string1是否可以由string2中的字符组成(没有重复字符)。例如,如果string1是“工具”,string2是“环礁”,函数将返回false。如果string1是“触摸”,string2是“chetoudce”,它将返回true。 在Javascript中最有效的方法是什么?我在考虑使用indexOf,然后从string2中删除用来