String Manipulation:Special String Again

#!/bin/python3

import math
import os
import random
import re
import sys
'''
# Complete the substrCount function below.
def substrCount(n, s):
    #每个单独字符
    result=n
    #连续两个,三个,,,n个字符相同
    for m in range(2,n):
        for i in range(n-m+1):
            if len(set(s[i:i+m]))==1:
                result+=1
    #连续三个,五个,,,最中间与其他不同
    if n%2==0:
        k=n-1
    else:
        k=n
    for m in range(3,k+2,2):
        for i in range(n-m+1):
            if len(set(s[i:i+m]))==2 and len(set(s[i:i+m//2]))==1 and len(set(s[(i+m//2+1):(i+m)]))==1 and s[i]==s[i+m-1]:
                result+=1  
    return result
'''
import itertools

def substrCount(n, s):
    l = []
    for k, g in itertools.groupby(s):
        l.append((k,len(list(g))))  
    count=0      
    #连续子集的组合
    for i in l:
        count += (i[1] * (i[1] + 1)) // 2
    #两边的字母如果相同则,且之间的字母只有一个
    for i in range(1, len(l) - 1):
        if l[i - 1][0] == l[i + 1][0] and l[i][1] == 1:
            count += min(l[i - 1][1], l[i + 1][1])

    return count

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    n = int(input())

    s = input()

    result = substrCount(n, s)

    fptr.write(str(result) + '\n')

    fptr.close()
发布了163 篇原创文章 · 获赞 90 · 访问量 6287

猜你喜欢

转载自blog.csdn.net/weixin_45405128/article/details/104214214