# 重新排列二進製字符串作為x和y的交替出現

## 例

```str = “01101”,

x = 1

y = 1```
`01011`

## 重新排列二進製字符串作為x和y交替出現的算法

```1. Count the total number of 0s and 1s.
2. Make a loop till the count of either of zeros or ones will be 0.
1. Traverse in an individual loop for zeroCount, till the value x is reached and till the zeroCount will not be 0, print the 0, and decrease the value of zeroCount by 1.
2. Traverse in an individual loop for onesCount, till the value y is reached and till the onesCount will not be 0, print the 1, and decrease the value of onesCount by 1.```

## 推薦碼

### 用C ++代碼重新排列二進製字符串作為x和y的交替出現

```#include<iostream>

using namespace std;

void arrangeZeroesAndOnes(string str, int x, int y)
{
int zeroCount = 0;
int onesCount = 0;
int len = str.length();

for (int i = 0; i < len; i++)
{
if (str[i] == '0')
zeroCount++;
else
onesCount++;
}
while (zeroCount > 0 || onesCount > 0)
{
for (int j = 0; j < x && zeroCount > 0; j++)
{
if (zeroCount > 0)
{
cout << "0";
zeroCount--;
}
}
for (int j = 0; j < y && onesCount > 0; j++)
{
if (onesCount > 0)
{
cout << "1";
onesCount--;
}
}
}
}
int main()
{
string str = "01101";
int x = 1;
int y = 1;
arrangeZeroesAndOnes(str, x, y);
return 0;
}
```
`01011`

### Java代碼將x和y交替出現重新排列為二進製字符串

```class arrangeBinaryString
{
static void arrangeZeroesAndOnes(String str, int x, int y)
{
int zeroCount = 0;
int onesCount = 0;
int len = str.length();

for (int i = 0; i < len; i++)
{
if (str.charAt(i) == '0')
zeroCount++;
else
onesCount++;
}

while (zeroCount > 0 || onesCount > 0)
{
for (int j = 0; j < x && zeroCount > 0; j++)
{
if (zeroCount > 0)
{
System.out.print ("0");
zeroCount--;
}
}
for (int j = 0; j < y && onesCount > 0; j++)
{
if (onesCount > 0)
{
System.out.print("1");
onesCount--;
}
}
}
System.out.println();
}
public static void main (String[] args)
{
String str = "01101";
int x = 1;
int y = 1;
arrangeZeroesAndOnes(str, x, y);

}
}
```
`01011`

## 複雜度分析

### 時間複雜度

O（N） 哪裡 “ n” 是字符串的長度。 在這裡，我們運行的循環等於字符串的長度。 因為我們被要求以特定的方式重新排列字符串。 我們必須打印所有使它以線性時間複雜度運行的字符。

### 空間複雜度

O（1）， 因為我們不存儲新字符串。 我們只是在打印新字符串的元素。 因此，此操作不會花費我們任何空間。 因此，算法本身的空間複雜度是恆定的。 雖然整個程序需要O（N）空間來存儲輸入。