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)
上一题
下一题