思路:库函数或者自己写
库函数:
class Solution {
public:
void reverseString(vector<char>& s) {
reverse(s.begin(),s.end());
for(char c:s){
cout<<c;
}
}
};
自己写:
class Solution {
public:
void reverseString(vector<char>& s) {
int left=0,right=s.size()-1;
for(;left<s.size()/2;left++,right--){
swap(s[left],s[right]);
}
for(char c:s){
cout<<c;
}
}
};
思路:做过
class Solution {
public:
string reverseStr(string s, int k) {
for(int i=0;i<s.size();i+=2*k){
//i代表当前字符串反转的起点
if(s.size()-i<k)
reverse(s.begin()+i,s.end());
else
reverse(s.begin()+i,s.begin()+i+k);
}
return s;
}
};
思路: 刷过
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<char> s;
char c;
while(cin>>c){
s.push_back(c);
}
int cot=0;
for(char c:s){
if(c-'0'>=0&&c-'0'<=9){
cot++;
}
}
int i=s.size()-1;
s.resize(s.size()+cot*5);
//双指针法 一个指向源字符串 一个指向新字符串 O(n)时间复杂度
int j=s.size()-1;
while(i>=0){
if(s[i]-'0'>=0&&s[i]-'0'<=9){
s[j--]='r';
s[j--]='e';
s[j--]='b';
s[j--]='m';
s[j--]='u';
s[j--]='n';
i--;
}
else{
//j在i后面永远不会超过i 不会被覆盖正向会被覆盖
s[j--]=s[i--];
}
}
for(char c:s){
cout<<c;
}
return 0;
}