Python Forum
[Discussion] Re. Substring counting
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Discussion] Re. Substring counting
#4
Of course, dynamic programming is the correct solution. I improved it to use only a one dimensional array. This is a nice generalization of Pascal's triangle. Actually, Pascal's triangle implements the case where the alphabet has only one letter!
import unittest as ut

def subsequence_count(needle, haystack):
    T = [0 for x in needle]
    pairs = [(i, needle[i]) for i in range(len(needle)-1, -1, -1)]
    for source in haystack:
        for i, search in pairs:
            if source == search:
                T[i] += T[i-1] if i > 0 else 1
    return T[-1]


class TestSubsequence(ut.TestCase):
    def test_banana(self):
        n = subsequence_count('an', 'banana')
        self.assertEqual(n, 3)
        
    def test_panama(self):
        n = subsequence_count('an', 'trans-Panamanian banana')
        self.assertEqual(n, 25)

    def test_nnn(self):
        n = subsequence_count('nnn', 'nnnnn')
        self.assertEqual(n, 10)
        
    def test_assesses(self):
        needle = "assessesassessesas"
        haystack = "assessesassessesassessesassessesassessesassesses"
        n = subsequence_count(needle, haystack)
        self.assertEqual(n, 7963870)

if __name__ == '__main__':
    ut.main()
I get
.  AutoExecution
....
----------------------------------------------------------------------
Ran 4 tests in 0.000s

OK
Reply


Messages In This Thread
Re. Substring counting - by Mekire - Jan-22-2018, 02:56 AM
RE: [Discussion] Re. Substring counting - by Mekire - Jan-22-2018, 08:52 AM
RE: [Discussion] Re. Substring counting - by Gribouillis - Jan-22-2018, 10:18 AM
RE: [Discussion] Re. Substring counting - by Mekire - Jan-22-2018, 10:29 AM
RE: [Discussion] Re. Substring counting - by wavic - Jan-22-2018, 11:38 AM
RE: [Discussion] Re. Substring counting - by wavic - Jan-22-2018, 11:43 AM
RE: [Discussion] Re. Substring counting - by Mekire - Jan-22-2018, 12:41 PM
RE: [Discussion] Re. Substring counting - by wavic - Jan-22-2018, 01:56 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Finding how many times substring is in a string using re module ranbarr 4 3,047 May-21-2021, 06:14 PM
Last Post: nilamo
  Substring in a string Propoganda 1 2,295 Dec-01-2019, 08:45 AM
Last Post: perfringo
  Find a substring in a dictonary; value substring of key aapurdel 2 7,183 May-31-2019, 06:14 PM
Last Post: ichabod801

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020