1 条题解
-
0
# 思路: # 对于字符串s中的每个字符位置i,分别计算其左侧(lhs)和右侧(rhs)与该字符不同的连续字符的数量。 # 如果i位置左侧有连续与s[i]不同的字符,记录数量lhs;同理如果i位置右侧有连续与s[i]不同的字符,记录数量rhs。 # 然后根据lhs和rhs计算出对结果ans的贡献,最后输出ans。 n = int(input()) s = input() ans = 0 for i in range(n): lhs = 0 # 判断当前位置i的前一个字符是否与当前字符不同 if i > 0 and s[i - 1]!= s[i]: # 如果不同,lhs初始为1 lhs += 1 k = i - 2 # 从i-2位置开始向左检查,统计与s[i - 1]相同的连续字符数量 while k >= 0 and s[k] == s[i - 1]: lhs += 1 k -= 1 rhs = 0 # 判断当前位置i的后一个字符是否与当前字符不同 if i + 1 < n and s[i + 1]!= s[i]: # 如果不同,rhs初始为1 rhs += 1 k = i + 2 # 从i+2位置开始向右检查,统计与s[i + 1]相同的连续字符数量 while k < n and s[k] == s[i + 1]: rhs += 1 k += 1 # 计算当前位置i对结果ans的贡献并累加到ans中 ans += lhs * rhs + max(lhs - 1, 0) + max(rhs - 1, 0) print(ans)
这段代码的核心是通过遍历字符串中的每个位置,计算该位置两侧与该位置字符不同的连续字符数量,进而得出结果。具体步骤如下:
- 首先读取输入的字符串长度
n
和字符串s
,并初始化结果变量ans
为0。 - 对于字符串中的每个位置
i
:- 计算左侧与
s[i]
不同的连续字符数量lhs
。 - 计算右侧与
s[i]
不同的连续字符数量rhs
。 - 根据
lhs
和rhs
计算对结果的贡献并累加到ans
中。
- 计算左侧与
- 最后输出结果
ans
。
- 首先读取输入的字符串长度
信息
- ID
- 3
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 8
- 已通过
- 1
- 上传者