A string contains patterns of the form 1(0+)1 where (0+) represents any non-empty consecutive sequence of 0’s. Count all such patterns. The patterns are allowed to overlap.
Note : It contains digits and lowercase characters only. The string is not necessarily a binary. 100201 is not a valid pattern.
Examples:
Input : 1101001 Output : 2 Input : 100001abc101 Output : 2
We have existing solution for this problem please refer Find all the patterns of “1(0+)1” in a given string link. Another set containing similar solution using regex in java is also published.
We will solve this problem quickly in python using Regex. Approach is very simple :
- Search a first sub-string in original string which follows ’10+1′ pattern using re.search(regex,string) method.
- substr = re.search(regex,string) return None if it doesn’t find given regex as sub-string in original string otherwise it returns first matched sub-string which follows ’10+1′ pattern. substr.start() gives us starting index of matched regex and substr.end() gives us ending index of matched regex.
- Whenever we find regex as sub-string then increase count by 1 and again search for given regex starting from ending index of previous sub-string.
# Python program to Find all the patterns # of “1(0+)1” in a given string using Python Regex import re # Function to Find all the patterns # of “1(0+)1” in a given string def extract( input ): # search regex '10+1' in original string # search() function return first occurrence # of regex '10+1' otherwise None # '10+1' means sub-string starting and ending with 1 # and atleast 1 or more zeros in between count = 0 substr = re.search( '10+1' , input ) # search for regex in original string # untill we are done with complete string while substr! = None : # if we find any occurrence then increase count by 1 count = count + 1 # find next occurrence just after previous # sub-string # for first occurrence 101, substr.start()=1 # substr.end()=4 input = input [(substr.end() - 1 ):] substr = re.search( '10+1' , input ) print (count) # Driver program if __name__ = = "__main__" : input = '1101001' extract( input ) |
Output:
2
Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.
To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course.