Skip to content
Related Articles

Related Articles

Python – Non-Overlapping occurrences of N Repeated K character

Improve Article
Save Article
  • Last Updated : 31 Aug, 2022
Improve Article
Save Article

Given a String, compute non-overlapping occurrences of N repeated K character.

Input : test_str = ‘aaabaaaabbaa’, K = “a”, N = 3 Output : 2 Explanation : “aaa” occurs twice as non-overlapping run. Input : test_str = ‘aaabaaaabbbaa’, K = “b”, N = 3 Output : 1 Explanation : “bbb” occurs once as non-overlapping run.

Method #1 : Using sum() + split() [ Works only for bi-string ]

In this, split, is performed at character other than K, and then each segment is counted for Occurrences, and frequency summed using sum(). This works for strings with contain only 2 unique characters.

Python3




# Python3 code to demonstrate working of
# Non-Overlapping occurrences of N Repeated K character
# Using split() + sum
 
# initializing string
test_str = 'aaabaaaabbaa'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing K
K = "a"
 
# initializing N
N = 2
 
# getting split char
spl_char = [ele for ele in test_str if ele != K][0]
 
# getting split list
temp = test_str.split(spl_char)
 
# getting Non-Overlapping occurrences
res = sum( len(sub) // N for sub in temp)
 
# printing result
print("The Non-Overlapping occurrences : " + str(res))

Output

The original string is : aaabaaaabbaa
The Non-Overlapping occurrences : 4

Method #2 : Using re.findall()

This is another way in which this task can be performed. This can handle all type of strings and using regex() to solve this.

Python3




# Python3 code to demonstrate working of
# Non-Overlapping occurrences of N Repeated K character
# Using re.findall()
import re
 
# initializing string
test_str = 'aaabaaaabbaa'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing K
K = "a"
 
# initializing N
N = 2
 
# getting length using len()
# getting all occ. of substring
res = len(re.findall(K * N, test_str))
 
# printing result
print("The Non-Overlapping occurrences : " + str(res))

Output

The original string is : aaabaaaabbaa
The Non-Overlapping occurrences : 4

The Time and Space Complexity for all the methods are the same:

Time Complexity: O(N)

Auxiliary Space: O(N)


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!