查找给定二进制字符串中最小正确字符串的 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