当前位置:   article > 正文

面试算法---01字符串交换次数_01序列相邻元素交换位置

01序列相邻元素交换位置

题目:把一个只包含01的字符串 进行排序,问最少可以交换多少次?

1,0,1,1,0,1,0,0,1,0,1,1,1,1,0,1


解题思路:利用快排思想 左边i 右边j  左边遇到1 右边遇到0 时交换 并计数一次 直到i=j位置



  1. public class zerooneswitch {
  2. public static void main(String[] args) {
  3. // TODO Auto-generated method stub
  4. int a[]={1,0,1,1,0,1,0,0,1,0,1,1,1,1,0,1};
  5. System.out.println(zerooneswitch(a, 0, a.length-1));
  6. }
  7. public static int zerooneswitch(int a[],int left,int right)
  8. {
  9. int n = 0;
  10. int temp;
  11. while(left<right)//循环前提条件
  12. {
  13. while(left<right&&a[left]==0)//左边遇到1之前 向右移位
  14. left++;
  15. while(left<right&&a[right]==1)//右边遇到0之前 向左移位
  16. right--;
  17. if(left<right) //交换并计数
  18. {
  19. temp=a[left];
  20. a[left]=a[right];
  21. a[right]=temp;
  22. n++;
  23. }
  24. }
  25. return n;
  26. }
  27. }



声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号