给你一个仅由小写英文字母组成的字符串 s 。在一步操作中,你可以完成以下行为: 选则 s 的任一非空子字符串,可能是整个字符串,接着将字符串中的每一个字符替换为英文字母表中的前一个字符。例如,'b' 用 'a' 替换,'a' 用 'z' 替换。 返回执行上述操作 恰好一次 后可以获得的 字典序最小 的字符串。 子字符串 是字符串中的一个连续字符序列。 现有长度相同的两个字符串 x 和 字符串 y ,在满足 x[i] != y[i] 的第一个位置 i 上,如果 x[i] 在字母表中先于 y[i] 出现,则认为字符串 x 比字符串 y 字典序更小 。使用c++写
时间: 2024-03-24 22:39:52 浏览: 202
c++字符串字符操作(有字符串说明)
好的,以下是C++的实现代码:
```c++
#include <iostream>
#include <string>
using namespace std;
string minimumString(string s) {
int n = s.size();
int i = 0;
while (i < n) {
if (s[i] != 'a') {
break;
}
i++;
}
if (i == n) {
s[n-1] = 'z';
for (int j = 0; j < n-1; j++) {
s[j] = s[j] == 'a' ? 'z' : s[j]-1;
}
} else {
for (int j = i; j < n; j++) {
if (s[j] == 'a') {
break;
}
s[j] = s[j]-1;
}
}
return s;
}
int main() {
string s = "abcb";
cout << minimumString(s) << endl; // 输出 "aaba"
return 0;
}
```
和之前的Python实现代码类似,这里也是先找到第一个可以被替换的字符位置,然后根据情况替换子字符串或整个字符串。注意,在C++中字符类型是用单引号表示的,而字符串类型是用双引号表示的。
阅读全文