题解:AT_joi2019_yo_c マルバツスタンプ (Circle Cross Stamps)

· · 题解

AT_joi2019_yo_c マルバツスタンプ (Circle Cross Stamps) 题解

题目大意

原题翻译:
JOI 君有三种印章:圆印章(O),叉印章(X),以及圆叉印章:可以印出一个圆和一个叉,可以是 OXXO)。他可以将这些印章按任意顺序使用,并且每种印章只能使用一次,把这些印章印在纸上,就可以形成一个包含 OX 的字符串 S

通过给定的字符串 S,找出 JOI 君可能拥有的最大圆叉印章的数量。

形象化题意:
字符串 S 包含字母 X 以及 O。求连续最多个 XOOX

题目思路

十分简单的模拟题目。对于字符串 S,寻找下标 i,使得 S_i 以及 S_{i+1} 满足:

注意,每一次当 i 满足条件时,是判断了 S_i 以及 S_{i+1}。所以,如果满足条件,就要让 i 自增。

CODE

def pd(a,b):
    return (a == 'X' and b == 'O') or (a == 'O' and b == 'X')
n = int(input())
s = input()
ans = 0
i = 0
while i < n-1:
    if pd(s[i], s[i+1]):
        i = i + 1
        ans = ans + 1
    i = i + 1
print(ans)