HStoltz
HStoltz

Reputation: 183

Want to understand the meaning of certain lines of code in Python

I came across that classic algorithm problem, Longest Palindrome Substring, in which one has to extract the longest palindromic substring from a given string, I saw this very simple brute force solution, but I don't think I fully understand its syntax.

def longestPalindrome( s):
    longest = “”
    for i in range(len(s)):
        for j in range(len(s),i,-1):
            if s[i:j] == s[i:j][::-1]:
                if len(longest) < len(s[i:j]):
                    longest = s[i:j]
    return longest

From what I could gather, it checks if all the substrings in a given string are palindromes by comparing them in size and finding the largest one. My question regards specific lines, in which I want to understand what is actually happening.

        for j in range(len(s),i,-1):
            if s[i:j] == s[i:j][::-1]:
                if len(longest) < len(s[i:j]):
                    longest = s[i:j]

In the first line, I do understand that there is an iteration going on in the length of the main string, but I don't get the ",i,-1)" part. What does this mean? In the "if len(longest) < len(s[i:j]):" line, I just don't understand the comparison itself. I mean, a variable was created to store the longest palindrome substring, but why should it be smaller than the length of the palindrome found?

Thanks in advance!

Upvotes: 1

Views: 146

Answers (2)

pippo1980
pippo1980

Reputation: 3023

I voted for @Xtrem532 answer, but however needed to see it to visualize it better

def longestPalindrome( s):
    longest = ''
    for i in range(len(s)):
        for j in range(len(s),i,-1):
            pal = 'NO'
            # print(i,'   :  ',j)
            if s[i:j] == s[i:j][::-1]:
                pal ='YES'
                if len(longest) < len(s[i:j]):
                    longest = s[i:j]
            print('I :', i,' J :',j ,'  :  ',s[i:j], '    ',s[i:j][::-1], '    ', pal,'   ',longest)
    return longest

pippo = longestPalindrome('AATGTGGTCCGTAGTCGTGACCC')

print('\n Longest Palindrome Substring : ', pippo)

here the output:

print is:

print('I :', i,' J :',j ,' : ',s[i:j], ' ',s[i:j][::-1], ' ', pal,' ',longest)

pal is NO oe YES depending on if palindrome is found after it longest palindrom recorded

I : 0  J : 23   :   AATGTGGTCCGTAGTCGTGACCC      CCCAGTGCTGATGCCTGGTGTAA      NO     
I : 0  J : 22   :   AATGTGGTCCGTAGTCGTGACC      CCAGTGCTGATGCCTGGTGTAA      NO     
I : 0  J : 21   :   AATGTGGTCCGTAGTCGTGAC      CAGTGCTGATGCCTGGTGTAA      NO     
I : 0  J : 20   :   AATGTGGTCCGTAGTCGTGA      AGTGCTGATGCCTGGTGTAA      NO     
I : 0  J : 19   :   AATGTGGTCCGTAGTCGTG      GTGCTGATGCCTGGTGTAA      NO     
I : 0  J : 18   :   AATGTGGTCCGTAGTCGT      TGCTGATGCCTGGTGTAA      NO     
I : 0  J : 17   :   AATGTGGTCCGTAGTCG      GCTGATGCCTGGTGTAA      NO     
I : 0  J : 16   :   AATGTGGTCCGTAGTC      CTGATGCCTGGTGTAA      NO     
I : 0  J : 15   :   AATGTGGTCCGTAGT      TGATGCCTGGTGTAA      NO     
I : 0  J : 14   :   AATGTGGTCCGTAG      GATGCCTGGTGTAA      NO     
I : 0  J : 13   :   AATGTGGTCCGTA      ATGCCTGGTGTAA      NO     
I : 0  J : 12   :   AATGTGGTCCGT      TGCCTGGTGTAA      NO     
I : 0  J : 11   :   AATGTGGTCCG      GCCTGGTGTAA      NO     
I : 0  J : 10   :   AATGTGGTCC      CCTGGTGTAA      NO     
I : 0  J : 9   :   AATGTGGTC      CTGGTGTAA      NO     
I : 0  J : 8   :   AATGTGGT      TGGTGTAA      NO     
I : 0  J : 7   :   AATGTGG      GGTGTAA      NO     
I : 0  J : 6   :   AATGTG      GTGTAA      NO     
I : 0  J : 5   :   AATGT      TGTAA      NO     
I : 0  J : 4   :   AATG      GTAA      NO     
I : 0  J : 3   :   AAT      TAA      NO     
I : 0  J : 2   :   AA      AA      YES     AA
I : 0  J : 1   :   A      A      YES     AA
I : 1  J : 23   :   ATGTGGTCCGTAGTCGTGACCC      CCCAGTGCTGATGCCTGGTGTA      NO     AA
I : 1  J : 22   :   ATGTGGTCCGTAGTCGTGACC      CCAGTGCTGATGCCTGGTGTA      NO     AA
I : 1  J : 21   :   ATGTGGTCCGTAGTCGTGAC      CAGTGCTGATGCCTGGTGTA      NO     AA
I : 1  J : 20   :   ATGTGGTCCGTAGTCGTGA      AGTGCTGATGCCTGGTGTA      NO     AA
I : 1  J : 19   :   ATGTGGTCCGTAGTCGTG      GTGCTGATGCCTGGTGTA      NO     AA
I : 1  J : 18   :   ATGTGGTCCGTAGTCGT      TGCTGATGCCTGGTGTA      NO     AA
I : 1  J : 17   :   ATGTGGTCCGTAGTCG      GCTGATGCCTGGTGTA      NO     AA
I : 1  J : 16   :   ATGTGGTCCGTAGTC      CTGATGCCTGGTGTA      NO     AA
I : 1  J : 15   :   ATGTGGTCCGTAGT      TGATGCCTGGTGTA      NO     AA
I : 1  J : 14   :   ATGTGGTCCGTAG      GATGCCTGGTGTA      NO     AA
I : 1  J : 13   :   ATGTGGTCCGTA      ATGCCTGGTGTA      NO     AA
I : 1  J : 12   :   ATGTGGTCCGT      TGCCTGGTGTA      NO     AA
I : 1  J : 11   :   ATGTGGTCCG      GCCTGGTGTA      NO     AA
I : 1  J : 10   :   ATGTGGTCC      CCTGGTGTA      NO     AA
I : 1  J : 9   :   ATGTGGTC      CTGGTGTA      NO     AA
I : 1  J : 8   :   ATGTGGT      TGGTGTA      NO     AA
I : 1  J : 7   :   ATGTGG      GGTGTA      NO     AA
I : 1  J : 6   :   ATGTG      GTGTA      NO     AA
I : 1  J : 5   :   ATGT      TGTA      NO     AA
I : 1  J : 4   :   ATG      GTA      NO     AA
I : 1  J : 3   :   AT      TA      NO     AA
I : 1  J : 2   :   A      A      YES     AA
I : 2  J : 23   :   TGTGGTCCGTAGTCGTGACCC      CCCAGTGCTGATGCCTGGTGT      NO     AA
I : 2  J : 22   :   TGTGGTCCGTAGTCGTGACC      CCAGTGCTGATGCCTGGTGT      NO     AA
I : 2  J : 21   :   TGTGGTCCGTAGTCGTGAC      CAGTGCTGATGCCTGGTGT      NO     AA
I : 2  J : 20   :   TGTGGTCCGTAGTCGTGA      AGTGCTGATGCCTGGTGT      NO     AA
I : 2  J : 19   :   TGTGGTCCGTAGTCGTG      GTGCTGATGCCTGGTGT      NO     AA
I : 2  J : 18   :   TGTGGTCCGTAGTCGT      TGCTGATGCCTGGTGT      NO     AA
I : 2  J : 17   :   TGTGGTCCGTAGTCG      GCTGATGCCTGGTGT      NO     AA
I : 2  J : 16   :   TGTGGTCCGTAGTC      CTGATGCCTGGTGT      NO     AA
I : 2  J : 15   :   TGTGGTCCGTAGT      TGATGCCTGGTGT      NO     AA
I : 2  J : 14   :   TGTGGTCCGTAG      GATGCCTGGTGT      NO     AA
I : 2  J : 13   :   TGTGGTCCGTA      ATGCCTGGTGT      NO     AA
I : 2  J : 12   :   TGTGGTCCGT      TGCCTGGTGT      NO     AA
I : 2  J : 11   :   TGTGGTCCG      GCCTGGTGT      NO     AA
I : 2  J : 10   :   TGTGGTCC      CCTGGTGT      NO     AA
I : 2  J : 9   :   TGTGGTC      CTGGTGT      NO     AA
I : 2  J : 8   :   TGTGGT      TGGTGT      NO     AA
I : 2  J : 7   :   TGTGG      GGTGT      NO     AA
I : 2  J : 6   :   TGTG      GTGT      NO     AA
I : 2  J : 5   :   TGT      TGT      YES     TGT
I : 2  J : 4   :   TG      GT      NO     TGT
I : 2  J : 3   :   T      T      YES     TGT
I : 3  J : 23   :   GTGGTCCGTAGTCGTGACCC      CCCAGTGCTGATGCCTGGTG      NO     TGT
I : 3  J : 22   :   GTGGTCCGTAGTCGTGACC      CCAGTGCTGATGCCTGGTG      NO     TGT
I : 3  J : 21   :   GTGGTCCGTAGTCGTGAC      CAGTGCTGATGCCTGGTG      NO     TGT
I : 3  J : 20   :   GTGGTCCGTAGTCGTGA      AGTGCTGATGCCTGGTG      NO     TGT
I : 3  J : 19   :   GTGGTCCGTAGTCGTG      GTGCTGATGCCTGGTG      NO     TGT
I : 3  J : 18   :   GTGGTCCGTAGTCGT      TGCTGATGCCTGGTG      NO     TGT
I : 3  J : 17   :   GTGGTCCGTAGTCG      GCTGATGCCTGGTG      NO     TGT
I : 3  J : 16   :   GTGGTCCGTAGTC      CTGATGCCTGGTG      NO     TGT
I : 3  J : 15   :   GTGGTCCGTAGT      TGATGCCTGGTG      NO     TGT
I : 3  J : 14   :   GTGGTCCGTAG      GATGCCTGGTG      NO     TGT
I : 3  J : 13   :   GTGGTCCGTA      ATGCCTGGTG      NO     TGT
I : 3  J : 12   :   GTGGTCCGT      TGCCTGGTG      NO     TGT
I : 3  J : 11   :   GTGGTCCG      GCCTGGTG      NO     TGT
I : 3  J : 10   :   GTGGTCC      CCTGGTG      NO     TGT
I : 3  J : 9   :   GTGGTC      CTGGTG      NO     TGT
I : 3  J : 8   :   GTGGT      TGGTG      NO     TGT
I : 3  J : 7   :   GTGG      GGTG      NO     TGT
I : 3  J : 6   :   GTG      GTG      YES     TGT
I : 3  J : 5   :   GT      TG      NO     TGT
I : 3  J : 4   :   G      G      YES     TGT
I : 4  J : 23   :   TGGTCCGTAGTCGTGACCC      CCCAGTGCTGATGCCTGGT      NO     TGT
I : 4  J : 22   :   TGGTCCGTAGTCGTGACC      CCAGTGCTGATGCCTGGT      NO     TGT
I : 4  J : 21   :   TGGTCCGTAGTCGTGAC      CAGTGCTGATGCCTGGT      NO     TGT
I : 4  J : 20   :   TGGTCCGTAGTCGTGA      AGTGCTGATGCCTGGT      NO     TGT
I : 4  J : 19   :   TGGTCCGTAGTCGTG      GTGCTGATGCCTGGT      NO     TGT
I : 4  J : 18   :   TGGTCCGTAGTCGT      TGCTGATGCCTGGT      NO     TGT
I : 4  J : 17   :   TGGTCCGTAGTCG      GCTGATGCCTGGT      NO     TGT
I : 4  J : 16   :   TGGTCCGTAGTC      CTGATGCCTGGT      NO     TGT
I : 4  J : 15   :   TGGTCCGTAGT      TGATGCCTGGT      NO     TGT
I : 4  J : 14   :   TGGTCCGTAG      GATGCCTGGT      NO     TGT
I : 4  J : 13   :   TGGTCCGTA      ATGCCTGGT      NO     TGT
I : 4  J : 12   :   TGGTCCGT      TGCCTGGT      NO     TGT
I : 4  J : 11   :   TGGTCCG      GCCTGGT      NO     TGT
I : 4  J : 10   :   TGGTCC      CCTGGT      NO     TGT
I : 4  J : 9   :   TGGTC      CTGGT      NO     TGT
I : 4  J : 8   :   TGGT      TGGT      YES     TGGT
I : 4  J : 7   :   TGG      GGT      NO     TGGT
I : 4  J : 6   :   TG      GT      NO     TGGT
I : 4  J : 5   :   T      T      YES     TGGT
I : 5  J : 23   :   GGTCCGTAGTCGTGACCC      CCCAGTGCTGATGCCTGG      NO     TGGT
I : 5  J : 22   :   GGTCCGTAGTCGTGACC      CCAGTGCTGATGCCTGG      NO     TGGT
I : 5  J : 21   :   GGTCCGTAGTCGTGAC      CAGTGCTGATGCCTGG      NO     TGGT
I : 5  J : 20   :   GGTCCGTAGTCGTGA      AGTGCTGATGCCTGG      NO     TGGT
I : 5  J : 19   :   GGTCCGTAGTCGTG      GTGCTGATGCCTGG      NO     TGGT
I : 5  J : 18   :   GGTCCGTAGTCGT      TGCTGATGCCTGG      NO     TGGT
I : 5  J : 17   :   GGTCCGTAGTCG      GCTGATGCCTGG      NO     TGGT
I : 5  J : 16   :   GGTCCGTAGTC      CTGATGCCTGG      NO     TGGT
I : 5  J : 15   :   GGTCCGTAGT      TGATGCCTGG      NO     TGGT
I : 5  J : 14   :   GGTCCGTAG      GATGCCTGG      NO     TGGT
I : 5  J : 13   :   GGTCCGTA      ATGCCTGG      NO     TGGT
I : 5  J : 12   :   GGTCCGT      TGCCTGG      NO     TGGT
I : 5  J : 11   :   GGTCCG      GCCTGG      NO     TGGT
I : 5  J : 10   :   GGTCC      CCTGG      NO     TGGT
I : 5  J : 9   :   GGTC      CTGG      NO     TGGT
I : 5  J : 8   :   GGT      TGG      NO     TGGT
I : 5  J : 7   :   GG      GG      YES     TGGT
I : 5  J : 6   :   G      G      YES     TGGT
I : 6  J : 23   :   GTCCGTAGTCGTGACCC      CCCAGTGCTGATGCCTG      NO     TGGT
I : 6  J : 22   :   GTCCGTAGTCGTGACC      CCAGTGCTGATGCCTG      NO     TGGT
I : 6  J : 21   :   GTCCGTAGTCGTGAC      CAGTGCTGATGCCTG      NO     TGGT
I : 6  J : 20   :   GTCCGTAGTCGTGA      AGTGCTGATGCCTG      NO     TGGT
I : 6  J : 19   :   GTCCGTAGTCGTG      GTGCTGATGCCTG      NO     TGGT
I : 6  J : 18   :   GTCCGTAGTCGT      TGCTGATGCCTG      NO     TGGT
I : 6  J : 17   :   GTCCGTAGTCG      GCTGATGCCTG      NO     TGGT
I : 6  J : 16   :   GTCCGTAGTC      CTGATGCCTG      NO     TGGT
I : 6  J : 15   :   GTCCGTAGT      TGATGCCTG      NO     TGGT
I : 6  J : 14   :   GTCCGTAG      GATGCCTG      NO     TGGT
I : 6  J : 13   :   GTCCGTA      ATGCCTG      NO     TGGT
I : 6  J : 12   :   GTCCGT      TGCCTG      NO     TGGT
I : 6  J : 11   :   GTCCG      GCCTG      NO     TGGT
I : 6  J : 10   :   GTCC      CCTG      NO     TGGT
I : 6  J : 9   :   GTC      CTG      NO     TGGT
I : 6  J : 8   :   GT      TG      NO     TGGT
I : 6  J : 7   :   G      G      YES     TGGT
I : 7  J : 23   :   TCCGTAGTCGTGACCC      CCCAGTGCTGATGCCT      NO     TGGT
I : 7  J : 22   :   TCCGTAGTCGTGACC      CCAGTGCTGATGCCT      NO     TGGT
I : 7  J : 21   :   TCCGTAGTCGTGAC      CAGTGCTGATGCCT      NO     TGGT
I : 7  J : 20   :   TCCGTAGTCGTGA      AGTGCTGATGCCT      NO     TGGT
I : 7  J : 19   :   TCCGTAGTCGTG      GTGCTGATGCCT      NO     TGGT
I : 7  J : 18   :   TCCGTAGTCGT      TGCTGATGCCT      NO     TGGT
I : 7  J : 17   :   TCCGTAGTCG      GCTGATGCCT      NO     TGGT
I : 7  J : 16   :   TCCGTAGTC      CTGATGCCT      NO     TGGT
I : 7  J : 15   :   TCCGTAGT      TGATGCCT      NO     TGGT
I : 7  J : 14   :   TCCGTAG      GATGCCT      NO     TGGT
I : 7  J : 13   :   TCCGTA      ATGCCT      NO     TGGT
I : 7  J : 12   :   TCCGT      TGCCT      NO     TGGT
I : 7  J : 11   :   TCCG      GCCT      NO     TGGT
I : 7  J : 10   :   TCC      CCT      NO     TGGT
I : 7  J : 9   :   TC      CT      NO     TGGT
I : 7  J : 8   :   T      T      YES     TGGT
I : 8  J : 23   :   CCGTAGTCGTGACCC      CCCAGTGCTGATGCC      NO     TGGT
I : 8  J : 22   :   CCGTAGTCGTGACC      CCAGTGCTGATGCC      NO     TGGT
I : 8  J : 21   :   CCGTAGTCGTGAC      CAGTGCTGATGCC      NO     TGGT
I : 8  J : 20   :   CCGTAGTCGTGA      AGTGCTGATGCC      NO     TGGT
I : 8  J : 19   :   CCGTAGTCGTG      GTGCTGATGCC      NO     TGGT
I : 8  J : 18   :   CCGTAGTCGT      TGCTGATGCC      NO     TGGT
I : 8  J : 17   :   CCGTAGTCG      GCTGATGCC      NO     TGGT
I : 8  J : 16   :   CCGTAGTC      CTGATGCC      NO     TGGT
I : 8  J : 15   :   CCGTAGT      TGATGCC      NO     TGGT
I : 8  J : 14   :   CCGTAG      GATGCC      NO     TGGT
I : 8  J : 13   :   CCGTA      ATGCC      NO     TGGT
I : 8  J : 12   :   CCGT      TGCC      NO     TGGT
I : 8  J : 11   :   CCG      GCC      NO     TGGT
I : 8  J : 10   :   CC      CC      YES     TGGT
I : 8  J : 9   :   C      C      YES     TGGT
I : 9  J : 23   :   CGTAGTCGTGACCC      CCCAGTGCTGATGC      NO     TGGT
I : 9  J : 22   :   CGTAGTCGTGACC      CCAGTGCTGATGC      NO     TGGT
I : 9  J : 21   :   CGTAGTCGTGAC      CAGTGCTGATGC      NO     TGGT
I : 9  J : 20   :   CGTAGTCGTGA      AGTGCTGATGC      NO     TGGT
I : 9  J : 19   :   CGTAGTCGTG      GTGCTGATGC      NO     TGGT
I : 9  J : 18   :   CGTAGTCGT      TGCTGATGC      NO     TGGT
I : 9  J : 17   :   CGTAGTCG      GCTGATGC      NO     TGGT
I : 9  J : 16   :   CGTAGTC      CTGATGC      NO     TGGT
I : 9  J : 15   :   CGTAGT      TGATGC      NO     TGGT
I : 9  J : 14   :   CGTAG      GATGC      NO     TGGT
I : 9  J : 13   :   CGTA      ATGC      NO     TGGT
I : 9  J : 12   :   CGT      TGC      NO     TGGT
I : 9  J : 11   :   CG      GC      NO     TGGT
I : 9  J : 10   :   C      C      YES     TGGT
I : 10  J : 23   :   GTAGTCGTGACCC      CCCAGTGCTGATG      NO     TGGT
I : 10  J : 22   :   GTAGTCGTGACC      CCAGTGCTGATG      NO     TGGT
I : 10  J : 21   :   GTAGTCGTGAC      CAGTGCTGATG      NO     TGGT
I : 10  J : 20   :   GTAGTCGTGA      AGTGCTGATG      NO     TGGT
I : 10  J : 19   :   GTAGTCGTG      GTGCTGATG      NO     TGGT
I : 10  J : 18   :   GTAGTCGT      TGCTGATG      NO     TGGT
I : 10  J : 17   :   GTAGTCG      GCTGATG      NO     TGGT
I : 10  J : 16   :   GTAGTC      CTGATG      NO     TGGT
I : 10  J : 15   :   GTAGT      TGATG      NO     TGGT
I : 10  J : 14   :   GTAG      GATG      NO     TGGT
I : 10  J : 13   :   GTA      ATG      NO     TGGT
I : 10  J : 12   :   GT      TG      NO     TGGT
I : 10  J : 11   :   G      G      YES     TGGT
I : 11  J : 23   :   TAGTCGTGACCC      CCCAGTGCTGAT      NO     TGGT
I : 11  J : 22   :   TAGTCGTGACC      CCAGTGCTGAT      NO     TGGT
I : 11  J : 21   :   TAGTCGTGAC      CAGTGCTGAT      NO     TGGT
I : 11  J : 20   :   TAGTCGTGA      AGTGCTGAT      NO     TGGT
I : 11  J : 19   :   TAGTCGTG      GTGCTGAT      NO     TGGT
I : 11  J : 18   :   TAGTCGT      TGCTGAT      NO     TGGT
I : 11  J : 17   :   TAGTCG      GCTGAT      NO     TGGT
I : 11  J : 16   :   TAGTC      CTGAT      NO     TGGT
I : 11  J : 15   :   TAGT      TGAT      NO     TGGT
I : 11  J : 14   :   TAG      GAT      NO     TGGT
I : 11  J : 13   :   TA      AT      NO     TGGT
I : 11  J : 12   :   T      T      YES     TGGT
I : 12  J : 23   :   AGTCGTGACCC      CCCAGTGCTGA      NO     TGGT
I : 12  J : 22   :   AGTCGTGACC      CCAGTGCTGA      NO     TGGT
I : 12  J : 21   :   AGTCGTGAC      CAGTGCTGA      NO     TGGT
I : 12  J : 20   :   AGTCGTGA      AGTGCTGA      NO     TGGT
I : 12  J : 19   :   AGTCGTG      GTGCTGA      NO     TGGT
I : 12  J : 18   :   AGTCGT      TGCTGA      NO     TGGT
I : 12  J : 17   :   AGTCG      GCTGA      NO     TGGT
I : 12  J : 16   :   AGTC      CTGA      NO     TGGT
I : 12  J : 15   :   AGT      TGA      NO     TGGT
I : 12  J : 14   :   AG      GA      NO     TGGT
I : 12  J : 13   :   A      A      YES     TGGT
I : 13  J : 23   :   GTCGTGACCC      CCCAGTGCTG      NO     TGGT
I : 13  J : 22   :   GTCGTGACC      CCAGTGCTG      NO     TGGT
I : 13  J : 21   :   GTCGTGAC      CAGTGCTG      NO     TGGT
I : 13  J : 20   :   GTCGTGA      AGTGCTG      NO     TGGT
I : 13  J : 19   :   GTCGTG      GTGCTG      NO     TGGT
I : 13  J : 18   :   GTCGT      TGCTG      NO     TGGT
I : 13  J : 17   :   GTCG      GCTG      NO     TGGT
I : 13  J : 16   :   GTC      CTG      NO     TGGT
I : 13  J : 15   :   GT      TG      NO     TGGT
I : 13  J : 14   :   G      G      YES     TGGT
I : 14  J : 23   :   TCGTGACCC      CCCAGTGCT      NO     TGGT
I : 14  J : 22   :   TCGTGACC      CCAGTGCT      NO     TGGT
I : 14  J : 21   :   TCGTGAC      CAGTGCT      NO     TGGT
I : 14  J : 20   :   TCGTGA      AGTGCT      NO     TGGT
I : 14  J : 19   :   TCGTG      GTGCT      NO     TGGT
I : 14  J : 18   :   TCGT      TGCT      NO     TGGT
I : 14  J : 17   :   TCG      GCT      NO     TGGT
I : 14  J : 16   :   TC      CT      NO     TGGT
I : 14  J : 15   :   T      T      YES     TGGT
I : 15  J : 23   :   CGTGACCC      CCCAGTGC      NO     TGGT
I : 15  J : 22   :   CGTGACC      CCAGTGC      NO     TGGT
I : 15  J : 21   :   CGTGAC      CAGTGC      NO     TGGT
I : 15  J : 20   :   CGTGA      AGTGC      NO     TGGT
I : 15  J : 19   :   CGTG      GTGC      NO     TGGT
I : 15  J : 18   :   CGT      TGC      NO     TGGT
I : 15  J : 17   :   CG      GC      NO     TGGT
I : 15  J : 16   :   C      C      YES     TGGT
I : 16  J : 23   :   GTGACCC      CCCAGTG      NO     TGGT
I : 16  J : 22   :   GTGACC      CCAGTG      NO     TGGT
I : 16  J : 21   :   GTGAC      CAGTG      NO     TGGT
I : 16  J : 20   :   GTGA      AGTG      NO     TGGT
I : 16  J : 19   :   GTG      GTG      YES     TGGT
I : 16  J : 18   :   GT      TG      NO     TGGT
I : 16  J : 17   :   G      G      YES     TGGT
I : 17  J : 23   :   TGACCC      CCCAGT      NO     TGGT
I : 17  J : 22   :   TGACC      CCAGT      NO     TGGT
I : 17  J : 21   :   TGAC      CAGT      NO     TGGT
I : 17  J : 20   :   TGA      AGT      NO     TGGT
I : 17  J : 19   :   TG      GT      NO     TGGT
I : 17  J : 18   :   T      T      YES     TGGT
I : 18  J : 23   :   GACCC      CCCAG      NO     TGGT
I : 18  J : 22   :   GACC      CCAG      NO     TGGT
I : 18  J : 21   :   GAC      CAG      NO     TGGT
I : 18  J : 20   :   GA      AG      NO     TGGT
I : 18  J : 19   :   G      G      YES     TGGT
I : 19  J : 23   :   ACCC      CCCA      NO     TGGT
I : 19  J : 22   :   ACC      CCA      NO     TGGT
I : 19  J : 21   :   AC      CA      NO     TGGT
I : 19  J : 20   :   A      A      YES     TGGT
I : 20  J : 23   :   CCC      CCC      YES     TGGT
I : 20  J : 22   :   CC      CC      YES     TGGT
I : 20  J : 21   :   C      C      YES     TGGT
I : 21  J : 23   :   CC      CC      YES     TGGT
I : 21  J : 22   :   C      C      YES     TGGT
I : 22  J : 23   :   C      C      YES     TGGT

 Longest Palindrome Substring :  TGGT

Upvotes: 1

Xtrem532
Xtrem532

Reputation: 781

1 for j in range(len(s), i, -1):
2     if s[i:j] == s[i:j][::-1]:
3         if len(longest) < len(s[i:j]):
4             longest = s[i:j]

Line 1:

Iterate over a range generator, from len(s) down to i, with stepsize -1 (backwards)

Line 2:

  • s[i:j]: Substring from character i up to character j
  • s[i:j][::-1] Substring of substring with stepsize -1 (backwards)

s[i:j] == s[i:j][::-1] compares the substring of s from i to j with the inverted (backwards) substring of s from j to i. This is the actual palindrome detection. The palindrome does not get save to a varaible

Lines 3 & 4:

(these get only executed if line 2 found a plindrome)
Check if the current longest Palindrome is shorter then the just found one, and if it is, write the new one into the longest variable

Upvotes: 3

Related Questions