游酷盛世笔试

小红的01串 坏串“010” “101”  每次可以翻转1位,求坏串变成好串需要的最少翻转次数
#include <iostream>
#include <string>
using namespace std;

bool isTrue(string&amp; s, int&amp; err) {
    for (unsigned long i = 0; i < s.size() ; i++) {
        if (s[i] == '0') {
            if (s.substr(i, 3) == &quot;010&quot;) {
                err = i;
                return false;
            }
        }
        if (s[i] == '1') {
            if (s.substr(i, 3) == &quot;101&quot;) {
                err = i;
                return false;
            }
        }
    }
    return true;
}

int reverse(string&amp; s, int&amp; err, int&amp; count) {
    if (isTrue(s, err)) {
        return 0;
    }
    int idx = err+1;
    if (s[err] == '1') {
        s[idx] = '1';
    } else {
        s[idx+1] = '1';
    }
    count++;
    // cout <<&quot;reverse:&quot; <<s<<endl;
    reverse(s, err, count);
    return 0;
}
int main() {
    int a;
    cin >> a;
    string s = to_string(a);
    int err = 0, count = 0;
    reverse(s, err, count);
    cout<<count;
}
// 64 位输出请用 printf(&quot;%lld&quot;)
全部评论
我的解法是考虑每个位置,当他左右元素和他不相等时再判断(101 010)然后,如果i+2没有越界,再往后考虑一个字符 如果和当前相同(1010)就把后面一位置反(1000),这样就可以同时处理两个坏串(原串假如是10101,改为11101会多处理一次,改成10001就不用处理第二次) 如果不同(1011)就考虑把当前字符置反(1111),同理 这样是防止出现额外的坏串(如10110,假如和上面的情况一样,改为10010,会造成出现新的坏串,改为11110就不会出现)
2 回复 分享
发布于 03-19 01:34 北京
你这个是不是不对啊
点赞 回复 分享
发布于 03-18 21:57 湖北

相关推荐

生物技术解决方案工程师(非制药类岗位,主要是医疗仪器相关,请同学们了解清楚后投递哦)工作职责:1.&nbsp;协同销售挖掘客户技术需求,提供专业解答与初步方案;2.&nbsp;设计技术传播内容,主导技术活动,制作材料并开展内外部培训;3.&nbsp;搭建维护演示环境,执行测试并推动方案优化;任职资格:1.&nbsp;本科及以上,生物医学工程、电子信息等相关专业,熟悉荧光显微镜、微流控系统等医药领域常用设备;2.&nbsp;具备优秀的技术表达、沟通及问题分析能力,能精准识别客户痛点并提供解决方案;3.&nbsp;学习与动手能力强,团队协作及适应力佳,可应对多任务成长&nbsp;+&nbsp;福利:不画饼,全是&nbsp;“技术人刚需”成长不&nbsp;“放养”:校招生专属&nbsp;“护航计划”:1V1&nbsp;导师带教、免费技术培训、晋升不&nbsp;“熬资历”福利不&nbsp;“抠门”:懂你需要的&nbsp;“实在”:食宿补贴、六险一金、免费体检、福利春节假、学习补贴、奖金牛客专属通道(都免初筛)【招聘官网内推投递】在线投递https://www.hkaco.com/,请务必输入内推二维码,内推码:ISVMA2!,将第一时间处理【邮箱投递】发简历到&nbsp;hrm@hkaco.com,邮件主题写&nbsp;“牛客&nbsp;+&nbsp;岗位&nbsp;+&nbsp;姓名&nbsp;+&nbsp;学校”(如&nbsp;“牛客&nbsp;+&nbsp;算法工程师&nbsp;+&nbsp;李四&nbsp;+&nbsp;XX&nbsp;理工”),24&nbsp;小时内收回复。
点赞 评论 收藏
分享
评论
2
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务