当前位置: 首页 > 知识库问答 >
问题:

查找字符串中的所有字母表如何优化

窦弘义
2023-03-14

给定一个字符串s和一个非空字符串p,在s中找到p的字母表的所有起始索引。

    null
def anagram(s,p):
    if len(p)>len(s):
        return False
    l_s=len(s)
    l_p=len(p)
    list1=[]
    offset=l_p
    k=offset
    i=0
    while (i <= l_s):
        s4=s[i:k]
        #print ("s= "+s4)
        if sorted(p)==sorted(s4):
            list1.append(i)
        i+=1
        k=i+(offset)
    return list1

共有1个答案

滕成双
2023-03-14

您只需要对p排序一次,因为它从不更改。您可以在函数开始时这样做。

当到达i=len_s-len_p时,应该停止循环,因为字符串的其余部分比p短。

def anagram(s,p):
    if len(p)>len(s):
        return False
    len_p = len(p)
    sorted_p = sorted(p)
    list1=[]
    for i in range(len(s) - len_p + 1):
        s4=s[i:i+len_p]
        #print ("s= "+s4)
        if sorted_p == sorted(s4):
            list1.append(i)
    return list1
 类似资料:
  • 问题内容: 因此,我试图在用户输入的字符串中查找所有大写字母,但始终出现此运行时错误: 我觉得很愚蠢,但我无法弄清楚,Oracle甚至在有关java.lang.StringIndexOutOfBoundsException的页面上谈论了charAt。 这是我的代码,用于查找大写字母并打印它们: 我非常感谢您的任何投入和/或帮助。 问题答案: 应该 请记住,数组索引从零开始。 字符串长度返回 字符串

  • 我有一个字符串列表,每个字符串大约有10个句子。我希望从每个字符串中找到以大写字母开头的所有单词。优选地在句子中的第一个词之后。我正在使用re。我要做这件事。当我手动设置string=''时,我不会遇到任何问题,但是当我尝试使用for循环来循环列表中的每个条目时,我会得到不同的输出。 输出: 当我手动输入字符串值时 输出: 但我似乎无法编写一个for循环来正确打印列表中5项的输出。有什么想法吗?

  • 问题内容: 我正在尝试查找“ |”的所有出现 在一个字符串中。 但我得到一个错误: 问题答案: 功能: 将返回的索引列表中的出现。

  • 我试图找出我的字符串是否包含从a到z的所有字母 我们可以通过其他方法解决这个问题,但我正在尝试仅使用模式和匹配器来解决它。

  • 问题内容: 什么是最好的纯Python实现,以检查字符串是否包含字母表中的任何字母? 哪里会因为没有字母而返回,而会因为有了字母而返回。 问题答案: 正则表达式应该是一种快速的方法:

  • 我试图检查String arrayList中的某个字符串是否包含Character arrayList中的所有字符。 这就是我目前正在尝试的: 这是我运行程序时遇到的错误: 错误来自这一行: 如果有人对如何解决这个问题有任何建议,我将不胜感激!