题目描述 给定一个 01 字符串 ss,你可以任选 ss 的一个非空子串,把这个子串在 ss 中翻转一次。输入格式 输入只有一行一个字符串,表示 ss。 输出格式 输出一行一个字符串,表示得到的字典序最小的字符串。c++代码
时间: 2024-04-16 22:23:45 浏览: 92
C++ 字符串
你好!你可以尝试使用以下的C++代码来解决这个问题:
```cpp
#include <iostream>
#include <string>
using namespace std;
string getSmallestString(string s) {
int n = s.length();
int start = -1, end = -1;
for (int i = 0; i < n; i++) {
if (s[i] == '0') {
start = i;
break;
}
}
if (start == -1) {
// 如果没有0,直接返回原字符串
return s;
}
for (int i = n - 1; i >= 0; i--) {
if (s[i] == '1') {
end = i;
break;
}
}
// 将start到end之间的子串翻转
for (int i = start; i <= end; i++) {
if (s[i] == '0') {
s[i] = '1';
} else {
s[i] = '0';
}
}
return s;
}
int main() {
string s;
cin >> s;
string result = getSmallestString(s);
cout << result << endl;
return 0;
}
```
这段代码会读取一个01字符串,并返回得到的字典序最小的字符串。
阅读全文