该问题要求在复制源中找到“隐藏的消息”。
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.
理论上,我们应该考虑文本中Pattern的重叠发生吗?因此,一种方法是从第一个元素屏幕到我们正在寻找的模式的文本长度?
这是我提出的伪代码,
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的新手。提前致谢。
答案 0 :(得分: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
答案 1 :(得分:0)
import re
print len(re.findall("abc", "abc123!@#654abcabc"))
答案 2 :(得分:0)
我认为更“pythonic”的解决方案是使用列表推导。
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]])