Python Forum
[Discussion] Re. Substring counting
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Discussion] Re. Substring counting
#2
Here is a version
import unittest as ut
import re

def subsequence_count(needle, haystack):
    if len(needle) == 1:
        return haystack.count(needle)
    elif len(needle) > 1:
        a, b = needle[0], needle[1:]
        result = 0
        for mo in re.finditer(a, haystack):
            result += subsequence_count(b, haystack[mo.end():])
        return result
    else:
        raise ValueError(('Non empty string expected, got', needle))




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)

if __name__ == '__main__':
    ut.main()
Reply


Messages In This Thread
Re. Substring counting - by Mekire - Jan-22-2018, 02:56 AM
RE: [Discussion] Re. Substring counting - by Gribouillis - Jan-22-2018, 08:03 AM
RE: [Discussion] Re. Substring counting - by Mekire - Jan-22-2018, 08:52 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 2,995 May-21-2021, 06:14 PM
Last Post: nilamo
  Substring in a string Propoganda 1 2,253 Dec-01-2019, 08:45 AM
Last Post: perfringo
  Find a substring in a dictonary; value substring of key aapurdel 2 7,091 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