class Solution {
public:
void reverseString(vector<char>& s) {
int slow = 0;
int fast = s.size()-1;
while(slow < fast){
swap(s[slow],s[fast]);
slow++;
fast--;
}
}
};
class Solution {
public:
void reverse(string& s,int start, int end){
while(start < end){
swap(s[start],s[end]);
start++;
end--;
}
}
string reverseStr(string s, int k) {
for(int i =0; i < s.size(); i=i+2*k){
if((i+2*k) < s.size()){
reverse(s, i, i+k-1);
}
else if(i+k<s.size()){
reverse(s, i, i+k-1);
}
else{
reverse(s, i, s.size()-1);
}
}
return s;
}
};
- 去除字符串多余的空格:双指针(难点)
- 逆转字符串:字符串reverse(s.begin(), s.end())
- 逆转字符串中的单词:双指针找每个单词的start,end。empty的作用,最后一个单词的逆转。
class Solution {
public:
void removeExtraspace(string& s){
int fast = 0, slow = 0;
while(fast < s.size() && s[fast] == ' ') fast++;
for(; fast < s.size(); fast++){
if(fast - 1 >= 0 && s[fast] == ' ' && s[fast - 1] == ' ') continue;
s[slow++] = s[fast];
}
if((slow - 1) >= 0 && s[slow - 1] == ' ') s.resize(slow-1);
else s.resize(slow);
}
string reverseWords(string s) {
removeExtraspace(s);
reverse(s.begin(), s.end());
int start = 0, end = 0;
bool empty = false;
for(int i = 0; i < s.size(); i++){
if(s[i] != ' ' && (!empty)){
start = i;
empty = true;
}
if(s[i] == ' ' && empty){
end = i;
reverse(s.begin() + start, s.begin()+end);
empty = false;
}
}
reverse(s.begin() + start, s.end());
return s;
}
};
#include<iostream>
using namespace std;
int main(){
string s;
while(cin >> s){
int oldSize = s.size();
int count = 0;
for(int i = 0; i < s.size(); i++){
if(s[i] >= '0'&& s[i] <= '9') count++;
}
s.resize(oldSize + count*5);
int newSize=s.size();
for(int i = oldSize - 1; i >= 0; i--){
if(s[i] < '0' || s[i] > '9') {
s[--newSize] = s[i];
}
else{
s[--newSize] = 'r';
s[--newSize] = 'e';
s[--newSize] = 'b';
s[--newSize] = 'm';
s[--newSize] = 'u';
s[--newSize] = 'n';
}
}
cout << s << endl;
}
}