class Solution {
public:
int minimumMoves(string s) {
}
};
2027. 转换字符串的最少操作次数
给你一个字符串 s
,由 n
个字符组成,每个字符不是 'X'
就是 'O'
。
一次 操作 定义为从 s
中选出 三个连续字符 并将选中的每个字符都转换为 'O'
。注意,如果字符已经是 'O'
,只需要保持 不变 。
返回将 s
中所有字符均转换为 'O'
需要执行的 最少 操作次数。
示例 1:
输入:s = "XXX"
输出:1
解释:XXX -> OOO
一次操作,选中全部 3 个字符,并将它们转换为 'O' 。
示例 2:
输入:s = "XXOX" 输出:2 解释:XXOX -> OOOX -> OOOO 第一次操作,选择前 3 个字符,并将这些字符转换为'O'
。 然后,选中后 3 个字符,并执行转换。最终得到的字符串全由字符'O'
组成。
示例 3:
输入:s = "OOOO"
输出:0
解释:s 中不存在需要转换的 'X' 。
提示:
3 <= s.length <= 1000
s[i]
为 'X'
或 'O'
原站题解
golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2022-12-27 12:30:41
func minimumMoves(s string) (res int) { covered := -1 for i, c := range s { if c == 'X' && i > covered { res++ covered = i + 2 } } return }
java 解法, 执行用时: 2 ms, 内存消耗: 39.3 MB, 提交时间: 2022-12-27 12:29:37
class Solution { public int minimumMoves(String s) { int covered = -1, res = 0; for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == 'X' && i > covered) { res++; covered = i + 2; } } return res; } }
python3 解法, 执行用时: 44 ms, 内存消耗: 15.1 MB, 提交时间: 2022-12-27 12:29:08
class Solution: def minimumMoves(self, s: str) -> int: covered = -1 res = 0 for i, c in enumerate(s): if c == 'X' and i > covered: res += 1 covered = i + 2 return res
python3 解法, 执行用时: 32 ms, 内存消耗: 15 MB, 提交时间: 2022-05-31 15:16:39
class Solution: def minimumMoves(self, s: str) -> int: ans, n, i = 0, len(s), 0 while i < n: if s[i] == 'O': i += 1 else: i += 3 ans += 1 return ans