排序

来源:互联网 发布:杭州网站建设优化 编辑:程序博客网 时间:2024/05/19 23:27

题目
给定一个01串(仅由‘ 0’或‘1’组成的字符串),现在想把这个数字串排序成“非递减”有序序列,请问至少需要多少次交换(任意两个位置交换)?
输入描述:
输入数据第一行是一个正整数T(T<=100),表示有T组测试数据;
接下来的T行,每行给出01串。
数据保证——
50%的字符串长度在[1,100 ]
95%的字符串长度在[1,10000]
100%的字符串长度在[1,1000000]
输出描述:
对于每组测试数据,请输出排成“非递减有序序列”的最小交换次数。
每组输出占一行。
输入例子:
3
01
10
110

输出例子:
0
1
1

#include <iostream>#include <string>using namespace std;int main(){    int t;    cin>>t;    while(t--){        string input;        cin>>input;        int i = 0;        int j = input.size()-1;        int result = 0;        while(i<=j){            if(input[i]=='0')                ++i;            else if(input[j]=='1')                --j;            else{                ++result;                ++i;                --j;                }        }        cout<<result<<endl;    }    return 0;}
原创粉丝点击