转换字符串的最少操作次数
You are given a string
sconsisting ofncharacters which are either'X'or'O'.A move is defined as selecting three consecutive characters of
sand converting them to'O'. Note that if a move is applied to the character'O', it will stay the same.Return the minimum number of moves required so that all the characters of
sare converted to'O'.
最近的动力就是早点学完早点打游戏
-
思路:贪心
局部最优:每次从以’X’字符为首的位置转换,使每次转换包含的’X’字符数量最多
全局最优:字符串中’X’字符总数一定,因此转换的总次数最少
-
实现:遍历整个字符串,如果当前字符为’X’,那么进行转换,指针后移三位;如果当前字符为’O’,那么指针后移一位
class Solution { public int minimumMoves(String s) { int res = 0; int i = 0; while (i < s.length()){ char c = s.charAt(i); if (c == 'O'){ i++; }else{ res++; i += 3; } } return res; } }- 复杂度
- 时间复杂度:O(n)O(n)O(n)
- 空间复杂度:O(1)O(1)O(1)
- 复杂度

本文介绍了一个字符串转换问题的解决方案,即如何将所有字符从'X'转换为'O',通过贪心算法实现最少的操作次数。文章详细阐述了算法的设计思路,并提供了一段Java代码示例。
4929

被折叠的 条评论
为什么被折叠?



