python模式计数 在复制起始点中找到“隐藏信息”

1 投票
3 回答
3784 浏览
提问于 2025-05-01 04:37

这个问题是在问如何在复制的起始点找到一个“隐藏的信息”。

Input: A string Text (representing the replication origin of a genome).

Output: A hidden message in Text.

把这个问题转成计算机能理解的语言,

Input: Strings Text and Pattern.

Output: Count(Text, Pattern).

比如说,

Count(ACAACTATGCATACTATCGGGAACTATCCT, ACTAT) = 3. 

理论上,我们应该考虑在文本中重复出现的模式,对吧?所以一种方法就是从第一个元素开始,检查到文本长度减去我们要找的模式的长度?

这是我想到的伪代码,

def PatternCount(Text, Pattern):
    count = 0
    for i = 0 to len(Text)-len(Pattern):
        if Text(i, len(Pattern)) = Pattern:
            count = count + 1
    return count

有什么建议吗?我刚学python。谢谢!

暂无标签

3 个回答

0

我觉得一个更“符合Python风格”的解决办法是使用列表推导式。

def pattern_count(text, pattern):
    return len([x for x in range(len(text) - len(pattern)+1) if pattern in text[x:len(pattern)+x]])
0
import re
print len(re.findall("abc", "abc123!@#654abcabc"))

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

1

这是我想到的办法:

def pattern_count(text, pattern):
    count = 0
    for i in range(0, len(text) - len(pattern) + 1):
        if text[i : len(pattern) + i] == pattern:
            count += 1
    return count

我们使用字符串切片(text[i : len(pattern) + i])来检查子字符串是否与模式匹配。

输入:text = "abc123!@#654abcabc"pattern = "abc",输出:3

撰写回答