剑指 Offer 05. 替换空格
题目链接:剑指 Offer 05. 替换空格
class Solution {
public:
string replaceSpace(string s) {
if(s.size() == 0)return s;
int count = 0;
for(char a : s){
if(a == ' ')count++;
}
int oldsize = s.size();
int newsize = oldsize + count * 2;
s.resize(newsize);
int point1 = oldsize - 1;
int point2 = newsize - 1;
while(point1 >= 0){
if(s[point1] != ' '){
s[point2--] = s[point1--];
continue;
}else{
point1--;
s[point2--] = '0';
s[point2--] = '2';
s[point2--] = '%';
}
}
return s;
}
};
剑指 Offer 58 - II. 左旋转字符串
class Solution {
public:
void reverse(string &s, int left, int right){
while(left <= right){
swap(s[left++], s[right--]);
}
}
string reverseLeftWords(string s, int n) {
int size = s.length();
reverse(s, 0, n - 1); //三次旋转实现
reverse(s, n, size - 1);
reverse(s, 0, size - 1);
return s;
}
};
收获
string类型
- string的size()也可以用length()来代替,一般情况下使用length()只是为了更好的表明这是一个字符串而已。
- string类型重新设置大小的函数:resize()