输入值包含0和1的数组,如何以O(n)时间复杂度,实现排序,0放在前面1放在后面。(任意位置的两个数都可以进行交换),输出交换的次数。
输入:{0,1}
输出:0次
输入:{1,0,1}
输出:1次
输入:{0,1,1,0}
输出:1次
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String temp = sc.nextLine();
temp=temp.trim();
char []arr= temp.toCharArray();
int [] sArr=new int[arr.length];
int j=0;
for(int i=0;i<arr.length;i++)
{
if(arr[i]!=','&&arr[i]!='}'&&arr[i]!='{')
{
sArr[j]=arr[i]-'0';
j++;
}
}
int left=0;
int right=j-1;
int swapTime=0;
while(left<right)
{
if(sArr[left]==0)
{
left++;
}
if(sArr[right]==1)
{
right--;
}
if(sArr[left]==1&&sArr[right]==0)
{
swapTime++;
left++;
right--;
}
}
System.out.println(swapTime);
}