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’

解题思路

贪心的思路,每当遇到X,就进行将包括该位的三个连续字符 并将选中的每个字符都转换为 ‘O’ 。统计出消除所有X所需要的翻转次数。

代码

class Solution {public:int minimumMoves(string s) {int res(0);for (int i = 0; i < s.size(); ++i) {if (s[i]=='X'){res++;s[i]='O';if (i+1<s.size())s[i+1]='O';if (i+2<s.size())s[i+2]='O';}}return res;}
};

2027. 转换字符串的最少操作次数相关推荐

  1. leedcode04:转换字符串的最少操作次数

    一:题目 给你一个字符串 s ,由 n 个字符组成,每个字符不是 'X' 就是 'O' . 一次 操作 定义为从 s 中选出 三个连续字符 并将选中的每个字符都转换为 'O' .注意,如果字符已经是 ...

  2. Leetcode1713. 得到子序列的最少操作次数[C++题解]:LCS转化成LIS,转化为nlogn做法

    文章目录 本题分析 题目链接 本题分析 本题难在问题转换上. [问题转化1]转化为求两个序列最长公共子序列(LCS)的长度. 然后target 的长度减去 公共子序列的长度,就是答案. 本题数据规模是 ...

  3. 最少操作次数(英雄会)

    作者博客链接 题目详情: 给定两个字符串,仅由小写字母组成,它们包含了相同字符. 求把第一个字符串变成第二个字符串的最小操作次数,且每次操作只能对第一个字符串中的某个字符移动到此字符串中的开头. 例如 ...

  4. 1713. 得到子序列的最少操作次数

    给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素. 每一次操作中,你可以在 arr 的任意位置插入任一整数.比方说,如果 arr = ...

  5. LeetCode 1775. 通过最少操作次数使数组的和相等(贪心+双指针)

    文章目录 1. 题目 2. 解题 1. 题目 给你两个长度可能不等的整数数组 nums1 和 nums2 . 两个数组中的所有值都在 1 到 6 之间(包含 1 和 6). 每次操作中,你可以选择 任 ...

  6. LeetCode 1713. 得到子序列的最少操作次数(最长上升子序DP nlogn)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素. 每一次操作中,你可以在 arr 的任 ...

  7. LeetCode 1674. 使数组互补的最少操作次数(差分思想)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个长度为 偶数 n 的整数数组 nums 和一个整数 limit . 每一次操作,你可以将 nums 中的任何整数替换为 1 到 limit 之间的 ...

  8. LeetCode 2208. 将数组和减半的最少操作次数(优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个正整数数组 nums .每一次操作中,你可以从 nums 中选择 任意 一个数并将它减小到 恰好 一半.(注意,在后续操作中你可以对减半过的数继续 ...

  9. Leetcode5470. 平衡括号字符串的最少插入次数【第 32 场双周赛】

    题意:每个左括号匹配两个连续的右括号,问插入多少字符可使字符串平衡 思路:记录左括号的数量,每次遇见右括号判断是否为连续右括号,如果是,直接消去一个左括号 ( l e f t − − ) (left- ...

最新文章

  1. 【C++】关联容器学习记录
  2. 华为nova3android,华为nova3和3i哪个好 华为nova3i和nova3区别对比
  3. linux 单网卡 路由,CentOS下双网卡单网关路由配置
  4. SAP CRM呼叫中心polling javascript - icf_notify_poll.js
  5. Linux文件去掉^M
  6. DP为王——动态规划法学习笔记
  7. php 日期加减处理函数,php日期加减处理函数示例
  8. 智能会议系统(16)---LinphoneService
  9. Leetcode:5.longest-palindromic-substring(最长回文子串)
  10. 解决matplotlib中文显示问题
  11. 《Java技术》第七次作业计科1501赵健宇
  12. Failed to access IIS metabase
  13. Linux中文件目录写法
  14. LINQ系列:Linq to Object集合操作符
  15. web前端html代码,WEB前端--HTML(示例代码)
  16. 3DMAX 卸载工具,完美彻底卸载清除干净3dmax各种残留注册表和文件
  17. 连续,可积,存在原函数,变上限积分
  18. 国内外需求管理工具使用感悟!
  19. vue element 确认弹框中显示图片(message里)
  20. 96.(leaflet之家)leaflet态势标绘-进攻方向修改(燕尾)

热门文章

  1. Miller_Rabin算法
  2. socket编程 -- epoll模型服务端/客户端通信的实现
  3. shell将命令执行的结果赋值给 变量
  4. 【算法】学习笔记(1):算法就是人类去教会计算机的方法
  5. 【汇编语言】记录一组数中负数的个数,8086与MIPS汇编程序
  6. mysql数据库开发的36条军规
  7. 字符串驻留机制截图?#注意回顾字符串的深浅拷贝小数据池那节
  8. 洛谷——P2018 消息传递
  9. mysql 数据库优化之执行计划(explain)简析
  10. centos 7安装配置vsftpd