Python Program to get number of consecutive repeated substring
Last Updated :
11 Apr, 2023
Given a substring K, the task is to write a Python Program to find the repetition of K string in each consecutive occurrence of K.
Example
Input : test_str = 'geeksgeeks are geeksgeeksgeeks for all geeks', K = "geeks"
Output : [2, 3, 1]
Explanation : First consecution of 'geeks' is 2.
Input : test_str = 'geeksgeeks are geeksgeeksgeeksgeeks for all geeks', K = "geeks"
Output : [2, 4, 1]
Explanation : First consecution of 'geeks' is 2, next comes with 4 consecution of geeks.
Method 1: Using split() + count() + list comprehension
Works only for specific cases in which consecution is separated by spaces. In this, each word is splitted using split(), and each segment is evaluated for repetition count using count().
Python3
# Python3 code to demonstrate working of
# Number of repeated substrings in consecution
# Using split() + count() + list comprehension
# initializing string
test_str = 'geeksgeeks are geeksgeeksgeeks for all geeks'
# printing original string
print("The original string is : " + str(test_str))
# initializing K
K = "geeks"
# count() counts repetition
res = [sub.count(K) for sub in test_str.split(' ') if sub.count(K) != 0]
# printing result
print("String repetitions : " + str(res))
Output:
The original string is : geeksgeeks are geeksgeeksgeeks for all geeks
String repetitions : [2, 3, 1]
Time Complexity: O(n)
Space Complexity: O(n)
Method 2: Using findall() + regex + len()
In this, all the runs are computed for repetition of substring, and then division of length by substring length gives the measure of repetition number.
Python3
# Python3 code to demonstrate working of
# Number of repeated substrings in consecution
# Using findall() + regex + len()
import re
# initializing string
test_str = 'geeksgeeksaregeeksgeeksgeeksforallgeeks'
# printing original string
print("The original string is : " + str(test_str))
# initializing K
K = 'geeks'
n = len(K)
# getting regex
regx = re.compile(f'((?:{K})+)')
# getting repeats counts
# findall finding all substring joined repetitions
res = [len(occ) // n for occ in regx.findall(test_str)]
# printing result
print("String repetitions : " + str(res))
Output:
The original string is : geeksgeeks are geeksgeeksgeeks for all geeks
String repetitions : [2, 3, 1]
Time Complexity: O(n)
Space Complexity: O(n)
Approach#3: using while loop
This approach uses a while loop to find the first occurrence of the given substring in the input string. It then checks for consecutive substrings by comparing the next substring with the given substring. It continues the loop until no more occurrences are found. The count of consecutive substrings is stored in a list, and this list is returned as the output.
Algorithm
1. Initialize an empty list count_list to store the count of consecutive occurrences of the substring in the string.
2. Set the variable start to 0.
3. Loop through the string until there are no more occurrences of the substring.
4. Find the first occurrence of the substring using the find() method.
5. If there is no occurrence, break out of the loop.
6. If there is an occurrence, initialize a counter count to 1.
7. Set the variable i to the index immediately following the first occurrence of the substring.
8. While the substring is consecutive, increment the counter count and update the variable i.
9. Append the counter count to the count_list.
10. Set the variable start to the index of the last consecutive occurrence of the substring.
11. Return the count_list.
Python3
def count_consecutive_substrings(string, substring):
count_list = []
start = 0
while True:
start = string.find(substring, start) # find the first occurrence of substring
if start == -1:
break
count = 1
i = start + len(substring)
while string[i:i+len(substring)] == substring: # check for consecutive substrings
count += 1
i += len(substring)
count_list.append(count)
start = i
return count_list
string = 'geeksgeeks are geeksgeeksgeeks for all geeks'
substring='geeks'
print(count_consecutive_substrings(string, substring))
Time complexity: O(n), where n is the length of the string.
Auxiliary Space: O(1), since we are only storing the count of consecutive occurrences in a list.
Similar Reads
Python - Ways to Count Number of Substring in String Given a string s, determine the number of substrings that satisfy certain criteria. For example we are given a string s="hellohellohello" we need to count how many time the substring occur in the given string suppose we need to find the substring "hello" so that the count becomes 3. We can use metho
2 min read
Python Program To Find Length Of The Longest Substring Without Repeating Characters Given a string str, find the length of the longest substring without repeating characters. For âABDEFGABEFâ, the longest substring are âBDEFGAâ and "DEFGAB", with length 6.For âBBBBâ the longest substring is âBâ, with length 1.For "GEEKSFORGEEKS", there are two longest substrings shown in the below
6 min read
Python - Maximum Consecutive Substring Occurrence Sometimes, while working with Python, we can have a problem in which we must check for substrings occurring in consecutive repetition. This can have applications in data domains. Let us discuss a way in which this task can be performed. Method #1: Using max() + re.findall() A combination of the abov
5 min read
Python program to Mark duplicate elements in string Given a list, the task is to write a Python program to mark the duplicate occurrence of elements with progressive occurrence number. Input : test_list = ['gfg', 'is', 'best', 'gfg', 'best', 'for', 'all', 'gfg'] Output : ['gfg1', 'is', 'best1', 'gfg2', 'best2', 'for', 'all', 'gfg3'] Explanation : gfg
3 min read
Python program to get all possible slices of a string for K number of slices Given a string, the task is to write a Python program to get all possible slices for K number of slices. Input : test_str = "Gfg4all", K = 3Output : [['G', 'f', 'g4all'], ['G', 'fg', '4all'], ['G', 'fg4', 'all'], ['G', 'fg4a', 'll'], ['G', 'fg4al', 'l'], ['Gf', 'g', '4all'], ['Gf', 'g4', 'all'], ['G
4 min read