Python - Ways to Count Number of Substring in String
Last Updated :
18 Jan, 2025
Improve
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 methods like count().
Using str.count()
count
()
method returns the number of non-overlapping occurrences of a substring in the string.
# Define the input string and the substring to count
s = "hellohellohello"
sub = "hello"
# Use the count() method to find the number of occurrences of the substring
c = s.count(sub)
print(c)
Output
3
Explanation:
count()
method counts the number of non-overlapping occurrences of the substring"hello"
within the strings
.- In this case, it returns
3
because the substring"hello"
appears three times in"hellohellohello"
.
Using a For Loop with String Slicing
A for
loop can iterate through the string, using slicing to check for the occurrence of a substring. For example, using s[i:i+len(substring)]
inside the loop allows for comparing each slice of the string to the target substring
s1 = "hellohellohello"
sub = "hello"
# Initialize count to zero
cnt = 0
# Iterate through the string to check for the substring
for i in range(len(s) - len(sub) + 1):
if s[i:i + len(sub)] == sub: # If substring matches, increment count
cnt += 1
print(cnt)
Output
3
Explanation:
for
loop iterates through the strings
, using slicing (s[i:i+len(substring)]
) to extract substrings of the same length assubstring
and compare them.- If the sliced substring matches the target
substring
, thecount
is incremented, resulting in a count of3
for the occurrences of"hello"
in"hellohellohello"
.
Using List Comprehension
Generate a list of indices where the substring starts and count its length.
# Input string and substring to count
s = "hello world, hello universe"
sub = "hello"
# Count occurrences of the substring using a generator expression
c = sum(1 for i in range(len(s) - len(sub) + 1) if s[i:i + len(sub)] == sub)
print(c)
Output
2
Explanation:
- Generator expression iterates through all possible starting indices in
s
and counts matches ofsub
with slices ofs
. - Range ensures slicing stays within bounds to compare each substring correctly.