文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个仅由字符 ‘0’ 和 ‘1’ 组成的字符串 s 。
一步操作中,你可以将任一 ‘0’ 变成 ‘1’ ,或者将 ‘1’ 变成 ‘0’ 。

交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符串。
例如,字符串 “010” 是交替字符串,而字符串 “0100” 不是。

返回使 s 变成 交替字符串 所需的 最少 操作数。

示例 1:
输入:s = "0100"
输出:1
解释:如果将最后一个字符变为 '1' ,s 就变成 "0101" ,即符合交替字符串定义。示例 2:
输入:s = "10"
输出:0
解释:s 已经是交替字符串。示例 3:
输入:s = "1111"
输出:2
解释:需要 2 步操作得到 "0101" 或 "1010" 。提示:
1 <= s.length <= 10^4
s[i] 是 '0' 或 '1'

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-changes-to-make-alternating-binary-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 分别考虑每个位置是 1,或者 0 的时候的最小操作次数,动态规划思想
class Solution {public:int minOperations(string s) {int one = s[0] == '0';int zero = s[0] == '1';int dp0, dp1;for(int i = 1; i < s.size(); ++i){if(s[i] == '1'){dp0 = one + 1;dp1 = zero;}else{dp0 = one;dp1 = zero + 1;}one = dp1;zero = dp0;}return min(zero, one);}
};

4 ms 6.8 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1758. 生成交替二进制字符串的最少操作数(DP)相关推荐

  1. LeetCode每日一题——1758. 生成交替二进制字符串的最少操作数

    LeetCode每日一题系列 题目:1758. 生成交替二进制字符串的最少操作数 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个仅由字符 '0' 和 '1' ...

  2. C++描述 LeetCode 5676. 生成交替二进制字符串的最少操作数

    C++描述 LeetCode 5676. 生成交替二进制字符串的最少操作数   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在C ...

  3. 1758 生成交替二进制字符串的最少操作数

    题目描述: 给你一个仅由字符 '0' 和 '1' 组成的字符串 s .一步操作中,你可以将任一 '0' 变成 '1' ,或者将 '1' 变成 '0' . 交替字符串 定义为:如果字符串中不存在相邻两个 ...

  4. leetcode---1758.生成交替二进制字符串的最少操作数

    目录 题目:给你一个仅由字符 '0' 和 '1' 组成的字符串 s .一步操作中,你可以将任一 '0' 变成 '1' ,或者将 '1' 变成 '0' . 交替字符串 定义为:如果字符串中不存在相邻两个 ...

  5. LeetCode-1758-生成交替二进制字符串的最少操作数

    1.逐位遍历 我们想要获得最少操作数,实际上只要与两个字符串进行比较即可,一个是1010交替的字符串,一个是0101交替的字符串.其中我们实际上只需要比较一个字符串即可,因为修改成另一个字符串的操作数 ...

  6. LeetCode 1536. 排布二进制网格的最少交换次数

    文章目录 1. 题目 2. 解题 1. 题目 给你一个 n x n 的二进制网格 grid,每一次操作中,你可以选择网格的 相邻两行 进行交换. 一个符合要求的网格需要满足主对角线以上的格子全部都是 ...

  7. LeetCode 1641. 统计字典序元音字符串的数目(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请返回长度为 n .仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量. 字符串 s 按 字典序排列 需要满足 ...

  8. LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)

    LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...

  9. LeetCode 1864. 构成交替字符串需要的最小交换次数

    文章目录 1. 题目 2. 解题 1. 题目 给你一个二进制字符串 s ,现需要将其转化为一个 交替字符串 . 请你计算并返回转化所需的 最小 字符交换次数,如果无法完成转化,返回 -1 . 交替字符 ...

最新文章

  1. mysql connection闪退重连_玩家排位巅峰赛开局闪退,重连失败,10分钟后一个提示让他懵了...
  2. 迟来总比没有好:SSE或服务器发送的事件现在已在JAX-RS中
  3. 技术人员转行产品经理读这些书就够了
  4. Traversing Mapping Filtering Folding Reducing
  5. 准备离职,工作的一些细节记录
  6. The Suspects(并查集入门)
  7. 请检查 PHP 或网站服务器日志,并正确配置 PHP 安装
  8. ZBrush for Mac的插图技巧
  9. springBoot操作数据库方式
  10. 【房价预测】基于matlab GM模型房价预测【含Matlab源码 346期】
  11. 把ts自动合并 下载网页视频并自动合成视频
  12. C语言实现的获取文件夹内文件名
  13. Android学习笔记 二八 字体
  14. 刘德华--10有一种精神叫刘德华
  15. Spark history server fails to render compressed inprogress history file in some cases
  16. 操作rabbitMQ时,误删guest账户,无法登录
  17. (VS2008)Cannot open include file: 'windows.h': No such file or directory 解决办法
  18. 如何在手机下载微博APP中视频?【最新有效方法】
  19. Arcgis选择自己想要的区域地图
  20. 电气工程师软件笔试题

热门文章

  1. activiti 批量 mysql_Activiti6系列(3)- 快速体验
  2. loading gif 透明_搞笑GIF:有这样的女朋友下班哪里都不想去
  3. 更新10_linux,时隔十年,QQ更新了Linux版本
  4. php表示私有变量的是,PHP 访问私有和受保护的成员变量
  5. 转:VC中MessageBox的常见用法
  6. SQLite3基本使用从shell到python
  7. Bootloader启动过程
  8. 利用SharePoint Designer开发可循环工作流
  9. *如何循序渐进向DotNet架构师发展(转)
  10. tcp窗口滑动以及拥塞控制