大佬们看看这个错哪了

#include<iostream>
using namespace std;
string s;
int main(){
    cin>>s;
    if(s.size()%2==1)
    for(int i=0;i<=s.length()/2;i++){
        cout<<1-i%2<<1-i%2;
    }
    else {
        int i=0;
        while(s[i]==s[i+1]&&i<s.size()){
            cout<<s[i]<<s[i+1];
            i+=2;
        }
        if(i>=s.size()){
            return 0;
        }
        if(s[i]>s[i+1])cout<<s[i]<<s[i];
        else if(s[i+1]>s[i])cout<<s[i+1]<<s[i+1];
        i+=2;
        for(int j=0;i<s.size();i+=2,j++){
            cout<<j%2<<j%2;
        }
    }
    return 0;
}

我的思路是:题目说明的“双生数”一定是偶数位的,第一位和第二位相同,第三位和第四位相同等等以此类推,所以如果输入的x是奇数位,那么直接输出一个比x大一位的11001100……以11和00交替类型的偶数位数,如果x是偶数位数,那么从前往后两位两位地找,找到不相同的两位,把其中较小的一位替换为大的那一位输出这两位,然后后面的所有位数按00110011……以00和11交替输出,直到输出的总位数与x相同

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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