测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A27584. 小明拿到了一个字符串s,仅由小写字母组成。现在他想知道这个字符串中有多少对(i,j),1 =<i<= j=<n 满足 s中第i到j个字符组成的子串是好字符串。定义字符串t是好字符串,当且仅当t满足以下条件1、t 的长度是奇数2、t 中每个字母的出现次数不超过 33、t中任意两个相邻字母都不相同注:子串是指字符串中取出一段连续的部分得到的字符串

填空题 容易

题目描述

小明拿到了一个字符串s,仅由小写字母组成。现在他想知道这个字符串中有多少对(i,j),1 =<i<= j=<n 满足 s中第i到j个字符组成的子串是好字符串。

定义字符串t是好字符串,当且仅当t满足以下条件

1、t 的长度是奇数

2、t 中每个字母的出现次数不超过 3

3、t中任意两个相邻字母都不相同

注:子串是指字符串中取出一段连续的部分得到的字符串

输入格式

输入一个非空字符串 s,仅由小写字母组成。

输出格式

输出一个整数,表示s中有多少个子串是好字符串

样例

abcdbca

16

数据范围

s 长度是=< 1000 的正整数

参考答案

# Python小学组-小明的字符串 (不用函数) s = inputO .strip ans = 0 for i in range(len(s)): for j in range(i,len(s)): check = True if (j-i+1) % 2 != 1: check = False continue for k in range(i, j): if s[k] == s[k+1]: check = False break if check == False: continue cnt = {} for k in range(i, j+1): if s[k] not in cnt: cnt[s[k]] = 0 cnt[s[k]] += 1 if cnt[s[k]] > 3: check = False break if(check): ans += 1 print(ans)
上一题 下一题