查詢給定二進位制字串中最小正確字串的 C++ 程式碼
假設我們有一個 n 位的二進位制字串 S。沒有多餘的前置零。我們可以在 S 上執行兩種不同的操作 −
交換任意一對相鄰的位
將所有 "11" 替換為 "1"
令 val(S) 是 S 的十進位制表示。我們必須找到最小正確字串,其中正確字串 A 小於另一個正確字串 'B',當 val(A) < val(B)
所以,如果輸入像 S = "1001",則輸出將為 100,因為我們可以像這樣執行操作 "1001" -> "1010" -> "1100" -> "100"。
步驟
要解決這個問題,我們將按照以下步驟進行 −
n := size of S res := a blank string res := res + S[0] for initialize i := 1, when i < n, update (increase i by 1), do: if S[i] is same as '0', then: res := res concatenate "0" return res
示例
讓我們看以下實現,以更好地理解 −
#include <bits/stdc++.h>
using namespace std;
string solve(string S){
int n = S.size();
string res = "";
res += S[0];
for (int i = 1; i < n; i++){
if (S[i] == '0'){
res += "0";
}
}
return res;
}
int main(){
string S = "1001";
cout << solve(S) << endl;
}輸入
"1001"
輸出
100
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP