leetcode -1864. 构成交替字符串需要的最小交换次数[通俗易懂]

leetcode -1864. 构成交替字符串需要的最小交换次数[通俗易懂]给你一个二进制字符串 s ,现需要将其转化为一个 交替字符串 。请你计算并返回转化所需的 最小 字符交换次数,如果无法完成转化,返回 -1 。交替字符串 是指:相邻字符之间不存在相等情况的字符串。例如,字符串 “010” 和 “1010” 属于交替字符串,但 “0100” 不是。任意两个字符都可以进行交换,不必相邻 。示例 1:输入:s = “111000”输出:1解释:交换位置 1 和 4:”111000″ -> “101010” ,字符串变为交替字符串。示例 2:输入:s =

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

交替字符串 是指:相邻字符之间不存在相等情况的字符串。例如,字符串 “010” 和 “1010” 属于交替字符串,但 “0100” 不是。

任意两个字符都可以进行交换,不必相邻 。

示例 1:

输入:s = "111000"
输出:1
解释:交换位置 1 和 4:"111000" -> "101010" ,字符串变为交替字符串。
示例 2:

输入:s = "010"
输出:0
解释:字符串已经是交替字符串了,不需要交换。
示例 3:

输入:s = "1110"
输出:-1
 

提示:

1 <= s.length <= 1000
s[i] 的值为 '0''1'
class Solution { 
   
public:
    int solve(int t,string &s){ 
   
        int st = t;
        int ans = 0;
        for(int i = t;i < s.size();i += 2){ 
   
            if(s[i] == '1')ans ++;
        }
        return ans;
    }
    int minSwaps(string s) { 
   
        int numl = 0,numy = 0;
        for(int i = 0;i < s.size();i ++){ 
   
            if(s[i] == '0')numl ++;
            else numy ++;
        }
        int ans = 0x3f3f3f3f;
        int n = s.size();
        if(n % 2){ 
   
            if(abs(numl - numy) != 1)return -1;
            else if(numl > numy){ 
   
                return solve(0,s);
            }
            else return solve(1,s);
        }
        else{ 
   
            if(numy != numl)return -1;
            ans = min(solve(0,s),solve(1,s));
            return ans;
        }
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169072.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python基础知识点汇总

    python基础知识点汇总本文包括python基本知识:简单数据结构,数据结构类型(可变:列表,字典,集合,不可变:数值类型,字符串,元组),分支循环和控制流程,类和函数,文件处理和异常等等。(1)简单数据结构标识符第一个字符必须是字母表中字母或下划线_。 标识符的其他的部分由字母、数字和下划线组成。 标识符对大小写敏感。python中数字有四种类型:整数、布尔型、浮点数和复数。int(整数),如1,只有一种整数类型int,表示为长整型,没有python2中的Long。 bool(…

    2022年10月16日
    0
  • 二项式分布和多项式分布的区别_二项式怎么化简

    二项式分布和多项式分布的区别_二项式怎么化简二项式定理(x+y)n=∑r=0n(nr)xryn−r=∑r=0nn!r!(n−r)!xryn−r(x+y)^n=\sum_{r=0}^n{n\chooser}x^ry^{n-r}=\sum_{r=0}^n\frac{n!}{r!(n-r)!}x^ry^{n-r}(x+y)n=r=0∑n​(rn​)xryn−r=r=0∑n​r!(n−r)!n!​xryn−reg:…

    2022年10月12日
    0
  • 搭建pycharm环境_pycharm怎么配置anaconda环境

    搭建pycharm环境_pycharm怎么配置anaconda环境首先要创建一个项目,创建项目的同时,pycharm默认会顺带创建一个虚拟环境(如果你没修改默认配置的话)。点击终端,如果前面有个(venv)就是使用的虚拟环境了。接下来我们安装pyside6,在终端中输入并执行以下命令:pipinstallpyside6安装完成后配置拓展工具,需要用到的2个工具是pyside6-uic和pyside6-designerpyside6-designer是调用pyside6模块内附带的qtdesigner在Linux中其位

    2022年8月27日
    1
  • 记笔记最好用的超高颜值软件之一!Typora 你值得拥有!「建议收藏」

    记笔记最好用的超高颜值软件之一!Typora 你值得拥有!「建议收藏」之前一直在寻找一款比较好用的记笔记软件,OneNote很强大,但是有时总是出现同步失败的问题,而且对代码类型的笔记不太友好。之后意外了解到markdown(一种富文本的记笔记形式),类似CSDN,于是就了解到Typora这款颜值超高还免费的软件!它支持多种好看的主题,支持代码高亮,文字注释…

    2022年5月12日
    42
  • webmin的repo

    webmin的repo

    2021年8月30日
    50
  • kubernetes可以实现容器集群的哪些功能_docker二进制安装

    kubernetes可以实现容器集群的哪些功能_docker二进制安装二进制方式部署Kubernetes高可用集群文章目录二进制方式部署Kubernetes高可用集群1.环境准备1.1.Kubernetes高可用集群部署方式1.2.Kubernetes集群弃用docker容器1.3.Kubernetes集群所需的证书1.4.环境准备1.5.安装cfssl证书生成工具2.操作系统初始化配置3.部署Etcd集群3.1.使用cfssl证书工具生成etcd证书3.2.部署etcd集群4.部署Docker服务4.1.安装docker4.2.为docker创建systemctl启动脚本

    2022年8月31日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号