Python|计算给定字符串中的重叠子字符串
给定一个字符串和一个子字符串,任务是从给定的字符串中获取重叠子字符串的计数。
请注意,在Python中, count()
函数返回给定字符串中子字符串的数量,但当子字符串出现两次重叠时,它不会给出正确的结果。考虑这个例子——
string = "GeeksforGeeksforGeeksforGeeks"
print(string.count("GeeksforGeeks"))
输出:
2
我们在这里得到的输出是 2,但预期的输出是 3,因为我们还想计算重叠子字符串的出现。
为了解决这个问题,我们可以在Python中使用find()
函数。它返回给定字符串中第一次出现子字符串的起始位置,然后我们将该位置增加 1 并从该位置继续搜索直到字符串的结尾。
下面是实现——
def CountOccurrences(string, substring):
# Initialize count and start to 0
count = 0
start = 0
# Search through the string till
# we reach the end of it
while start < len(string):
# Check if a substring is present from
# 'start' position till the end
pos = string.find(substring, start)
if pos != -1:
# If a substring is present, move 'start' to
# the next position from start of the substring
start = pos + 1
# Increment the count
count += 1
else:
# If no further substring is present
break
# return the value of count
return count
# Driver Code
string = "GeeksforGeeksforGeeksforGeeks"
print(CountOccurrences(string, "GeeksforGeeks"))
输出:
3