【每日一题Day69】转换字符串的最少操作次数 |贪心

简介: 实现:遍历整个字符串,如果当前字符为’X’,那么进行转换,指针后移三位;如果当前字符为’O’,那么指针后移一位

转换字符串的最少操作次数


You are given a string s consisting of n characters which are either 'X' or 'O'.


A move is defined as selecting three consecutive characters of s and 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 s are 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 ( 1 )
目录
相关文章
|
4月前
|
存储 C语言
牛客网刷题总结(1.有序序列判断,2.获得月份天数,3.矩阵相等判定,4.矩阵转换,5.井字棋判断输赢,6.递归进行进制转化)
牛客网刷题总结(1.有序序列判断,2.获得月份天数,3.矩阵相等判定,4.矩阵转换,5.井字棋判断输赢,6.递归进行进制转化)
39 0
|
10月前
|
存储 算法
带你刷算法——数组/字符串的完全掌握(一)(上)
带你刷算法——数组/字符串的完全掌握(一)
|
10月前
|
存储 算法 Java
带你刷算法——数组/字符串的完全掌握(一)(中)
带你刷算法——数组/字符串的完全掌握(一)
|
11月前
|
存储
Leecode面试题43. 1~n整数中1出现的次数
Leecode面试题43. 1~n整数中1出现的次数
49 0
2023.3.5-课堂练习01题目:计算最长英语单词链
2023.3.5-课堂练习01题目:计算最长英语单词链
|
数据建模
【每日一题Day66】LC1754构造字典序最大的合并字符串 | 贪心 双指针模拟
思路:双指针遍历两个字符串,贪心比较字符的字典顺序,并添加至结果集
63 0
【每日一题Day66】LC1754构造字典序最大的合并字符串 | 贪心 双指针模拟
力扣刷题记录——459.重复的字符串、461. 汉明距离、476. 数字的补数
力扣刷题记录——459.重复的字符串、461. 汉明距离、476. 数字的补数
117 0
力扣刷题记录——459.重复的字符串、461. 汉明距离、476. 数字的补数
LeetCode每日一题-9:替换后的最长重复字符串
LeetCode每日一题-9:替换后的最长重复字符串
|
存储 算法
面试高频算法题---无重复字符的最长子串
给定一个字符串s,请你找出其中不含有重复字符的最长子串长度
面试高频算法题---无重复字符的最长子串