问题标题: 酷町堂:1486 字符串排序

0
0

0
已采纳
汪恺恒
汪恺恒
中级启示者
中级启示者

输入字符串,把在a和b间的字母找出来,放进一个字符串里,把这个字符串排序

然后遍历字符串,把对应位置的字母填进去

处理并排序
for(int i=0;i<s.size();i++){
        if(s[i]>=a&&s[i]<=b){
            x+=s[i];
        }
}
sort(x.begin(),x.end());
改变字符串
for(int i=0;i<s.size();i++){
        if(s[i]>=a&&s[i]<=b){
            ans+=x[cnt];
            cnt++;
        }else{
            ans+=s[i];
        }
}

最后输出ans就可以了

0
0
0
王文博
王文博
缔造者之神
缔造者之神

@汪恺恒 @汪宇航 @汪宇航 @王子耀 @包涵宇 有思路吗?

0
汪宇航
汪宇航
新手启示者
新手启示者

广度优先搜索可以的(我试过)

0
汪宇航
汪宇航
新手启示者
新手启示者

简单法则:在for,i从0~a.size()-1,j从0~i-1,判断是否a[i]和a[j]都在a和b之间,是则判断a[j]是否大于a[i],大于则swap,最后输出a

0
汪宇航
汪宇航
新手启示者
新手启示者

汪宇航

637

Accepted:100分

汪宇航的测评结果:

0
汪宇航
汪宇航
新手启示者
新手启示者

给你循环:

for(int i=0;i<a.size();i++){
        for(int j=0;j<i;j++){
            if(a[i]>=x&&a[i]<=y&&a[j]>=x&&a[j]<=y){
                if(a[i]<a[j])swap(a[i],a[j]);
            }
        }
    }

我要回答