滑动窗:
- 解决这个问题的最好方法是编写一个O(N)算法。
- 如果字符数是可管理的,那么它可以被调优得相当好。如果没有,您需要编写几个方法,并使您的算法模块化,以便于调试和维护。
代码
定义滑动窗口(s,char_a,char_b,count_a,count_b):res=[]开始=[]对于范围内的i(长度):char=s[i]如果char在(chara,charb)中:开始。追加(i)对于启动中的启动:As,Bs=0,0温度=“”对于范围内的i(开始,长度):字符=s[i]如果char==char_a:As+=1如果char==char_b:Bs+=1温度+=字符如果As==count_a和Bs==coount_b:附件(临时)打破返回ress=“GGACATCGCGGTGGTGGATCGCACACGCGCGGTGATCGATCGCGCGCGCGGCGCGCGATCGCGGGTGCGATCCGGCGCGAGCGCGAGACGACATGCGCCGCGCGCG”打印(_sliding_window(s,'G','C',2,1),“\n”)打印(_sliding_window(s,'G','C',3,0),“\n”)打印(_sliding_window(s,'G','C',1,2),“\n”)打印(_sliding_window(s,'G','C',0,3),“\n”)
注:
打印
['GGAC','GCG','CGG','GGATC','GATCG',‘GCG’,'GCG,‘CGG’,‘GGATC’,‘GATCG’,’GACG’,‘CGG'[‘GGTG’,‘GTGG’,’GGTG‘,’GTGG‘,‘GGTG']['GACATC','CATCG','CGC','CGC','GCC',‘CACG',‘CGC’,‘CGAC’,‘GACATC’[“CCAC”,“CATCC”]
Regex图案
很难为每个案例编写模式。但编写模式的方法如下。
- 用必要的东西定义前瞻。
- 为每种情况逐个定义图案,并使用管道连接它们。
对于任何顺序的3G:
(?=.*G.*G.*G)([G].*?[G].*?[G])
代码
进口再进口p=r'(?=.*G.*G.*G)([G].*?[G].*?[G])'s=“”GGACATCGCGGTGGATCGACGACACACGCGGTGCGATCGATCGACCGACCGATCGCGTGGATCGAGCGCGCGCG。GGACATGCGCGCGGGACATCGCGCG。GGACATGCGCG。GCGG或GTGG或GGACATCG。GCGG或GTGG或GGACATGCGCG。GGACATGCGCG。GGACATGCGCGCGGGACATCGCGCG。GGACATGCGCG。GCGG或GTGG或GGACATCG。GCGG或GTGG或GGACATGCGCG。GGACATGCGCGCG。GGACATGCGCGCGGGACATCGCGCG。GGACATGCGCG。"""find_3G=重新查找所有(p,s)打印(find_3G)#请注意“GCG”。G'也是发现的一部分。
打印
['GGACATCG','GGTG','GATCGACG','GACATCGCG',‘GTGG',‘GACGG’,‘GCGG’,“GGATCG”、“GACATGCG”和“GCG”。G','GACATGCG','GCGG','GACATGCG','GCG。G','GACATGCG','GCGG','GTGG','GGACATCG','GCGGGG','GCGCG','GGACATG','GCGCG,'GGCATG',‘GCGCG’,‘GGACATG’,'GCGCG,'GGACATG','GCGCG','GCGG','GTGG',''GGACATCG',''GCGGG'',''GTGG'',“GGACATG”,“GCGCG”,“GGACATG”,'GCGCG','GGACATG',‘GCGCG’,‘GGACTG’,‘GCGCG’,‘GGACATG’,’GCGCG‘]
两个G和一个C的原始蛮力算法如下O(N^2):
定义模式(_P):返回s.count('G')==2和s.count('C')==1定义集合(_C):res=[]对于范围内的i(长度):对于范围(i+1,长度+1)中的j:部分=s[i:j]如果模式(部件)(_P):附件(部分)返回ress=“”“GGACATCGCGGTGGATCGACGACACACGCGGTGCGATCGATCGACCGACCGATCGCGTGGATCGAGCGCGCGCG。GGACATGCGCGCGGGACATCGCGCG。GGACATGCGCG。GCGG或GTGG或GGACATCG。GCGG或GTGG或GGACATGCGCG。GGACATGCGCG。GGACATGCGCGCGGGACATCGCGCG。GGACATGCGCG。GCGG或GTGG或GGACATCG。GCGG或GTGG或GGACATGCGCG。GGACATGCGCG。GGACATGCGCGCGGGACATCGCGCG。GGACATGCGCG。"""G、 C=2,1打印(集合)(_C)
打印
[“\nGGAC”,“\nGGCAC”,“\n GGACAT”,“GGAC“,”GGACA“,”nGGACAT“,”GCG“,“CGG”、“CGGT”、“TGGATC”、“GGATC”、“GATCG”、“GATCGA”、“GACG”、“ACGG”,“ACGGA”,“CGG”,“GCGA”,‘GGAC’,‘GGCAC’,‘G GACAT’,‘GCG’,‘CGG’,“CGGT”、“TGGATC”、“GGATC”,“GATCG”、“GATCGA”、“AGCGA”、“ACGG”、,‘CGG’,‘CGGA’,‘GGAC’,‘G GACA’,‘g GACAT’,‘GCG’,“CGG”,‘CGGT’,“TGGATC”、“GGATC”,“GATCG”、“GATCGA”、“GA G”,“GA GA”,“G CATG”,'GACATG','ATGCG','TGCG','GCG'GCG.“,”重心。G','。GGAC“,”。GGACA“,”。GGACAT’,‘GGAC’,‘G GACA’,‘g GACAT‘,“GGAC”,“GGACA”,“G GACAT”,“GACATG”,“ATGCG”,‘TGCG’,‘GCG’,‘GCG’,‘GCG’,‘CGG’,'GGAC',‘GGACA’,‘GGCAT’,‘GACATG’,’ATGCG’、‘TGCG’,'GCG','GCG],'GCG,'GCG.','GCG.'GCG.“,”重心。G','。GGAC“,”。GGACA“,”。GGACAT’,‘GGAC’,‘G GACA’,‘g GACAT‘,‘G GA C’,’G GACA‘,‘GGA CAT’,'GACATG','ATGCG','TGCG','GCG','GCG','GCG','GCG.','GCG.“,”GCG公司。\n’,'重心。\nG’,'G.\nGC’,'。\nGCG','\nGCG'、'\nGCG'、'GCG','CGG',“CGG”、“CGG o”、“GCG or”、“CCG or”或“,”或“GGAC”、“或GGACA”、“,或GGACAT“,”或GGAC“,”or GGACA“,”or-GGACAT”,“or GGAC”,“or-GGACA”,“或GGACA”,“or GGACAT”、“r GGAC”、“rGGACA”、“r-GGACATs”、“GGAC“、”GGACA“、”GGACAT、GGAC、GGACA、GGACT、ATCG。G’,‘TCG。G','重心。G','G。GC“,”。GCG’、‘GCG’、‘GCG’、‘CGG’、‘CGG’、‘CGG o’、‘CGG or’、‘CGG or’“、”或GGAC“、”、或GGACA“、”,或GGACAT“、”或者GGAC”、“或者GGACA”、“或GGACC”,“或GGACAT”、“或GGAC”、“or GGACA”、“或者GGACAD”、“r GGAC”、,“r GGACAT”、“GGAC”、“GGACA”、“GGACAT”、“GGAC”、“GGACA”、“GGACAT”,'GACATG','ATGCG','TGCG','GCG'GCG.“,”重心。G','。GGAC“,”。GGACA“,”。GGACAT’,‘GGAC’,‘G GACA’,‘g GACAT‘,“GGAC”,“GGACA”,“G GACAT”,“GACATG”,“ATGCG”,‘TGCG’,‘GCG’,‘GCG’,“GCG”,“GCG.”,“GCG.“,”重心。G','。GGAC“,”。GGACA“,”。GGACAT“,”GGAC’,‘GGACA’,‘G GACAT’,‘g GAC’,“ATGCG”,“TGCG”,“GCG”,'GGACAT','GACATG','ATGCG','TGCG','GCG',“GCG.”,“重心。G','。GGAC“,”。GGACA“,”。“GGACAT”,“GGAC”,“G GACA”,“GGACAT”,“GGAC”,“GGACA”,“GAACAT”,“GACATG”,“ATGCG”,‘TGCG’,'GCG','GCG],'GCG,'GCG.','GCG.'GCG.“,”GCG公司。\n’,'重心。\nG’,'G.\nGC’,'. \nGCG','\nGCG',''\nGCG'、'GCG'、'CGG'、'CGG','CGG o','CGG or',“CGG or”、“or GGAC”、“,or GGACA”、“或GGACAT”、“orGGAC,”或GGACA“,”或“GGACAT”,“或GGAC”,“or GGACA”,“or-GGACAT“,”rGGAC“,”rGGACA’,‘r GGACAT’,‘GGAC’,‘G GACA’,“GGACAT”,“ATCG”。G’,‘TCG。G','重心。G','G.GC','。GCG’,“GCG”,‘GCG’、‘CGG’、’CGG’,‘CGG o’、‘GCG or’、‘IGG or’,‘或GGAC’,‘,或GGACA“,”,或GGACAT“,”或GGAC“,”或者GGACA”,“或GGACAD”,“或者“GGAC”,“or GGACA”,“或GGACAT”,“r GGAC“,”r GGACA“,”GGAC’,‘GGACA’,‘G GACAT’,‘g GAC’,“ATGCG”,“TGCG”,“GCG”GCG.“,”重心。G','。GGAC“,”。GGACA“,”。GGACAT’,‘GGAC’,‘G GACA’,‘g GACAT',‘G GA C’,'GGACA','GGACAT','GACATG','ATGCG','TGCG','GCG',“GCG.”,“GCG.“,”重心。G','。GGAC“,”。GGACA“,”。GGACAT“,”GGAC“,”GGACA','GGACAT','GGAC','GGACA','GGACAT','GACATG','ATGCG',“TGCG”,“GCG”,“GC”,'GACATG','ATGCG','TGCG','GCG'GCG.“,”重心。G','。GGAC“,”。GGACA“,”。GGACAT’,‘GGAC’,‘G GACA’,‘g GACAT‘,“GGAC”,“GGACA”,“G GACAT”,“GACATG”,“ATGCG”,‘TGCG’,‘GCG’,‘GCG’,“GCG”,“GCG.”,“GCG.“,”GCG公司。\n’]号
注释