24、反转字符串
题目简介:
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s
的形式给出。
不要给另外的数组分配额外的空间,你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。
初见思路:
well,有点简单。就是一个swap
函数,一个双指针,双指针天下无敌!
class Solution {
public:
void reverseString(vector<char>& s) {
int n = s.size();
int left =0;
int right = n-1;
while(left < right){
swap(s[left],s[right]);
left++;
right--;
}
}
};
25、反转字符串2
题目简介:
我无语,这个题目的介绍能写得再没逻辑一点吗,完全看不懂啊!
class Solution {
public:
string reverseStr(string s, int k) {
int n = s.size();
for(int i = 0; i < s.size();i += (2*k)){
if(n - i >= k){
int left = i ;
int right = i+k-1;
while(left < right){
swap(s[left],s[right]);
left++;
right--;
}
}
else{
int left = i;
int right = n-1;
while(left < right){
swap(s[left],s[right]);
left++;
right--;
}
}
}
return s;
}
};
我真服了,我生气了!
26、替换数组
题目简介:
给定一个字符串 s
,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number
。 例如,对于输入字符串 "a1b2c3"
,函数应该将其转换为 "anumberbnumbercnumber"
。
初见思路:
还挺简单的吧,就是定义一个新数组吧,从头开始往后,然后慢慢的判断,如果数字就填充number
;
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
string temp;
string word = "number";
cin>>temp;
vector<char> strtemp;
for(auto &a : temp){
if( a >= '0' && a<='9'){
for(auto &b :word){
strtemp.push_back(b);
}
}else{
strtemp.push_back(a);
}
}
for(auto &c : strtemp){
cout<<c;
}
return 0;
}