📜  Python|计算给定字符串中的重叠子字符串

📅  最后修改于: 2022-05-13 01:55:22.115000             🧑  作者: Mango

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