原题链接:1208. 翻硬币 - AcWing题库
思路:首先我们先想想这道题的暴力做法:从左往右依次操作一遍,只要当前位置硬币不匹配,直接翻转,而由于是从左往右操作,所以当前位置-1一定是匹配上了的,所以要翻当前位置和当前位置+1的硬币。操作完后遍历一下两个串,看看是不是都匹配上了,如果都匹配上了再更新答案。然后依次枚举每个起点执行上述流程,这样就涵盖了所有可能了。
接下来分析一下暴力的时间复杂度:比较直观,每次遍历一遍,一共遍历n次,所以时间复杂度O(n²),这里说明一下,事实上时间复杂度要小于O(n²),因为每次遍历不是真的从头开始,这道题字符串长度不超过100,10000远小于1e8,所以暴力完全ok。
所以做法就很清晰了:
- 从起点开始遍历,如果不匹配则turn