** 344.反转字符串 **
leetcode链接:https://leetcode.cn/problems/reverse-string/submissions/681193879/
题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
核心思路:主要自己实现reverse函数的功能。
点击查看代码
class Solution {
public:
void reverseString(vector<char>& s) {
int left = 0,right = s.size() - 1;
while(right > left){
int tmp = 0;
tmp = s[right];
s[right--] = s[left];
s[left++] = tmp;
}
}
};
点击查看代码
class Solution {
public:
string reverseStr(string s, int k) {
for(int i = 0;i < s.size();i += (2*k)){//2k
if(i + k <= s.size()){
reverse(s.begin()+i,s.begin()+i+k);//左闭右开不包括k
}
else{
reverse(s.begin()+i,s.end());
}
}
return s;
}
};
点击查看代码
#include<iostream>
using namespace std;
int main(){
string s;
while(cin>>s){
int oldIndex = s.size() - 1;
int count = 0;
for(int i = 0;i < s.size();i++){
if('0' <= s[i] && s[i] <= '9'){
count++;
}
}
s.resize(s.size() + count*5);
int newIndex = s.size() - 1;
while(oldIndex >= 0){
if('0' <= s[oldIndex] && s[oldIndex] <= '9'){
s[newIndex--] = 'r';
s[newIndex--] = 'e';
s[newIndex--] = 'b';
s[newIndex--] = 'm';
s[newIndex--] = 'u';
s[newIndex--] = 'n';
}
else{
s[newIndex--] = s[oldIndex];
}
oldIndex--;
}
cout<< s <<endl;
}
}