游酷盛世笔试

小红的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就不会出现)
1 回复 分享
发布于 03-19 01:34 北京
你这个是不是不对啊
点赞 回复 分享
发布于 03-18 21:57 湖北

相关推荐

#面试吐槽bot#&nbsp;时间线:3.24&nbsp;投递简历&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.26&nbsp;笔试&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.9&nbsp;&nbsp;&nbsp;一面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.18&nbsp;二面+流程终止😁真是离了个大谱!!其实游酷一面面试体验可以说是暑期面试最好的,考察很全面,面试官人也好,最后反问环境很耐心和全面给你解答问题。😅然后二面我是真的看不懂了,全程30分钟,一道手撕然后两个开放问题,问完急急忙忙说好了就到这然后马上挂了,反问也不反问,甚至我再见都没说完就下线了,然后晚上一看流程终止。😂接下来详细讲讲这个二面的面试官。我抽到手撕题是删除链表中有重复的元素,然后是核心代码模式,我就问了一下面试官这个参数的head是哑节点还是第一个数据节点,他模模糊糊说了一些然后说是哑节点,我就按哑节点开始写。写完一跑有错误样例,就是输入是&nbsp;{}然后输出是{}但是我的报错。逆天的来了,面试官和我说空的情况你返回“{}”(没错,他说返回“括号”)才对,我直接懵了,我跟他说这个下面的输入输出显示是牛客自己内部处理显示出来的吧,这个函数返回值是ListNode*,要返回nullptr吧。他就模模糊糊:哦哦,对对那就返回这个。后面我调好了再跑,又碰到有不过的样例,我就开始调试,调了一下发现head压根不是哑节点,就是指向第一个数据的节点,我就跟面试官说明,他就说哦哦然后让我改,改了一会终于通过了,接下来就是开头提到的两个开放问题,讲一下项目难点和你学的新技术,然后就光速下线。😓是我面试后跟hr吐槽这个面试官不专业的原因吗?但是实在是让人忍不住吐槽啊,友友们,换做你们会怎么想?#面试# #kpi面#
查看3道真题和解析 面试吐槽bot
点赞 评论 收藏
分享
评论
1
6
分享

创作者周榜

更多
牛客网
牛客企业服务