AcWing 1208. 翻硬币 -- Python
原题链接
简单
作者:
Duckcc
,
2021-04-01 19:59:25
,
所有人可见
,
阅读 484
基于迭代
依次扫,碰到就翻
基本思想
为什么是这种思维?
题意有,只能翻相邻
于是碰到该翻的可以选择 翻它前面的+它 或 它后面的+它
**但我们顺着扫描,前面的肯定是不用翻的**
翻它前面的+它 只会让 它前面的 也变为需要翻的
所以直接扫一遍就行
Python3 代码
star = list(input())
end = list(input())
s = 0
q = 1 # 阀
for i in range(len(star)-1):
if q and star[i] != end[i]: # 利用阀,在前面没被翻过时,正常比较是否不同(不同就要翻
s += 1
q = 0 # 调动阀
continue
if not q and star[i] == end [i]: # 阀改变,前面的被翻过了 反而相同的其实是该翻的
s += 1
continue # 不用动阀,因为此次也是一次翻转
q = 1 # 通过了第二 if,说明没翻,归正阀
print(s)