python模式计数 在复制起始点中找到“隐藏信息”
这个问题是在问如何在复制的起始点找到一个“隐藏的信息”。
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