题解 | #abb#

abb

http://www.nowcoder.com/practice/0a8bbf8b9b5b4280957849ef4f240f07

n = int(input())
if n < 3: 
    print(0)
else:
    s = input()
    dp = [{} for i in range(n)] # dp[i]记录i之后各个字母出现的次数
    ans = 0
    for i in range(n-2, -1, -1):
        dp[i] = dp[i + 1].copy()
        key = s[i + 1]
        val = dp[i+1].get(key, 0) + 1
        dp[i][key] = val 

    for i in range(n - 3, -1, -1):
        for key, val in dp[i].items(): # 和字母i不同且在之后出现超过两次
            if key != s[i] and val >= 2:
                ans += val * (val - 1) // 2
    print(ans)
        
    

全部评论

相关推荐

明天不下雨了:兄弟你是我今天看到的最好看的简历(我说的是简历风格跟简历书写)把985 211再搞亮一点。投boss就说;您好,我华科(985)研二在读,本科211。对您的岗位很感兴趣,希望能获得一次投递机会。
点赞 评论 收藏
分享
给🐭🐭个面试机会吧:我boss直聘天天有家教跟我打招呼😓
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务