一、344-反转字符串
class Solution {
public:
void reverseString(vector<char>& s) {
for(int i = 0, j = s.size() - 1; i < s.size() / 2; i++, j--){
swap(s[i], s[j]);
}
}
};
二、541-反转字符串II
class Solution {
public:
string reverseStr(string s, int k) {
for(int i = 0; i < s.size(); i += (2*k)){
if(i + k <= s.size()){
reverse(s.begin() + i, s.begin() + i + k);
}else{
reverse(s.begin() + i, s.end());
}
}
return s;
}
};
三、卡码网-54-替换数字
#include<iostream>
using namespace std;
int main(){
string s;
while(cin >> s){
int count = 0;
int sOldSize = s.size();
for(int i = 0; i < s.size(); i++){
if(s[i] >= '0' && s[i] <= '9'){
count++;
}
}
s.resize(s.size() + count * 5);
int sNewSize = s.size();
for(int i = sNewSize - 1, j = sOldSize - 1; j < i; j--,i--){
if(s[j] > '9'||s[j] < '0'){
s[i] = s[j];
}else{
s[i] = 'r';
s[i - 1] = 'e';
s[i - 2] = 'b';
s[i - 3] = 'm';
s[i - 4] = 'u';
s[i - 5] = 'n';
i -= 5;
}
}
cout << s << endl;
}
}
四、151-翻转字符串里的单词
class Solution {
public:
void reverse(string& s, int start, int end){
for(int i = start, j = end; i < j; i++, j--){
swap(s[i], s[j]);
}
}
void removeExtraSpaces(string& s){
int slow = 0;
for(int i = 0; i < s.size(); ++i){
if(s[i] != ' '){
if(slow != 0){
s[slow++] = ' ';
}
while(i < s.size() && s[i] != ' '){
s[slow++] = s[i++];
}
}
}
s.resize(slow);
}
string reverseWords(string s) {
removeExtraSpaces(s);
reverse(s, 0, s.size() - 1);
int start = 0;
for(int i = 0; i <= s.size(); ++i){
if(i == s.size() || s[i] == ' '){
reverse(s, start, i - 1);
start = i + 1;
}
}
return s;
}
};
五、卡码网-55-右旋转字符串
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n;
string s;
cin >> n;
cin >> s;
int len = s.size();
reverse(s.begin(), s.end());
reverse(s.begin(), s.begin() + n);
reverse(s.begin() + n, s.end());
cout << s << endl;
}
总结
再接再厉,拒绝abandon