算法面试字符串-题目1

来源:互联网 发布:初学者关于编程的书 编辑:程序博客网 时间:2024/06/05 18:35
把一个0-1串(只包含0和1的串)进行排序,你可以交换任意两个位置,问最少交换的次数?(国内某公司最新在线笔试题)

分析: 快排partition?最左边的那些0和最右边的那些1都可以不管

程序如下:

#include <iostream>#include <string>#include <vector>using namespace std;class Solution {public:    int minPartition(string &A) {       int n = A.size();       int i = 0;       int j = n - 1;       int count = 0;       while(i < j)       {   //cout << 1<< endl;if(A[i] == '1'){if(A[j] == '0'){count++;i++;j--;}elsej--;}elsei++;}       return count;                }};int main(){Solution* p = new Solution;string B = "000011001";cout << B << endl;cout <<p->minPartition(B)<< endl;delete p;return 0;}




原创粉丝点击