giampiero mu wrote: > hi everyone > > my target is implement a function controlla(string - a binary string-) > that check if there is in a string two equal not overlapping > subsequences at least of length limitem:
You can do this with a regular expression: >>> import re >>> r=re.compile(r'(?P<seq>.{4,}).*(?P=seq)') >>> r.match('abcaoeaeoudabc') >>> r.match('abcdaeaeuabcd') <_sre.SRE_Match object at 0x008D67E0> >>> _.group(1) 'abcd' >>> r.match('abcdefgaeaeuabcdefg') <_sre.SRE_Match object at 0x008D68E0> >>> _.group(1) 'abcdefg' Kent > > my code: > > def controlla(test): > # print test > limitem=4 > lunghezz=len(test) > > l1=lunghezz-limitem+1 > l2=lunghezz-limitem+1 > f=0 > > for ii in range(l1): > for kk in range(l2): > t1=test[ii:ii+limitem] > t2=test[kk:kk+limitem] > if abs(ii-kk)>=limitem : > if t1==t2 : > f=1 > if f==1 : > break > break > break > if f==0 : > return test > else: > return 'no' > > > the question is: Is there a faster way doing that? I don't know, > changing string into list or array, using map, or module, using > different loop, regular expression,funcional programming , list > comprehensions , sets, different looping techniques, i dont > know.......(!) > -- http://mail.python.org/mailman/listinfo/python-list