学习目标
熟练使用字符串的操作
过程
344.反转字符串
class Solution {
public:
void reverseString(vector<char>& s) {
//反转字符串
int size=s.size();
if(size<=1){
return;
}
for(int i=0;i<size/2;i++){
int j=size-1-i;
char temp_char=s[i];
s[i]=s[j];
s[j]=temp_char;
}
}
};
541. 反转字符串II
class Solution {
public:
string reverseStr(string s, int k) {
int size=s.size();
int i=0;
while(i<size){
int end=i+k;
if(end>size){
end=size;
}
for(int j=i,k=1;j<(i+end)/2;j++,k++){
char temp_char=s[j];
s[j]=s[end-k];
s[end-k]=temp_char;
}
i+=2*k;
}
return s;
}
};
151.翻转字符串里的单词
class Solution {
public:
string reverseWords(string s) {
//反转单词的算法
int size=s.size();
//从后往前算
string reverse_string;
int reverse_i=0;
int i=size-1;
int begin,end; //表示字符串开始和结束的位置
begin=-1;
end=i;
while(i>=0){
if(s[i]==' '){
if(i==end){ //那就表明结尾没有找到
end=--i;
continue;
}
//那么这个空格就是开始的位置
begin=i+1;
string temp_string;
// for(;begin<=end;begin++){
// reverse_string[reverse_i++]+=s[begin];
// }
reverse_string.append(s.substr(begin,(end-begin+1)));
reverse_string+=' ';
end=i-1;
}
结论
字符的理解比较容易,但是一些字符串的操作有待加强!