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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 逻辑漏洞概述[通俗易懂]

    逻辑漏洞概述[通俗易懂]访问:主体与客体之间的信息流动。主动的是主体,被动的是客体。主体访问客体的四个步骤:身份标识-&amp;gt;身份验证(数据库匹配信息,判断身份是否合法)-&amp;gt;授权(判断身份是谁,管理员或正常账户)-&amp;gt;审计(记录操作)访问控制模型:自主访问控住(DAC大部分使用):由客体的属主自主对客体进行管理,自主决定是否将访问权限授予其他主体。强制访问控制(MAC军方或重要政府部门用):安全…

    2022年4月28日
  • js 给元素添加自定义属性

    js 给元素添加自定义属性给元素添加自定义属性obj.setAttribute(‘attr_name’,’attr_value’);//例如obj.setAttribute(‘class’,’snow-container’)给元素添加class属性的三种方法document.getElementsByTagName(‘body’)[0].className=’snow-container’;//设置为新的…

    2022年6月22日
  • 2 NICs on same subnet

    2 NICs on same subnet

    2021年8月12日
  • 微信小程序跳转页面携带参数

    微信小程序跳转页面携带参数小程序跳转页面并携带参数,有两种情况,一是在wxml里通过navigatorurl跳转,一种是在js里通过点击事件跳转,下面案例为跳转详情页面在wxml中:<viewclass=’wait-solve’wx:for=”{{items}}”wx:key=”items.name”wx:for-index=”idx”wx:for-item=”item”>…

    2022年11月1日
  • LC5–ftp服务器密码检测

    LC5–ftp服务器密码检测目录实验目的:实验任务:实验原理:实验环境:实验步骤:实验目的:1.掌握FTP服务器的搭建方法2.理解FTP的使用。3.学习LC5激活成功教程密码工具的配置和使用方法。实验任务:1、架设一个简单的FTP服务器,分配用户,并…

    2022年7月24日
  • 生产环境数据库并发数的调整

    生产环境数据库并发数的调整在开发和测试时,我们往往不会很在意数据库相关的一些并发数的配置,因为开发和测试时,系统的并发量并不会很大,因此,是否正确设置这些参数也不会对结果造成什么影响但是,上生产环境后,系统的并发量大大提高,这时,没有注意数据库的并发数配置的话就会使数据库成为系统最终的并发瓶颈。根据我在实际项目中一段时间的并发测试后,发现关于数据库并发数需要配置的几个地方,希望跟大家分享一下,…

    2022年6月13日

发表回复

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

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