1、替换空格
先确定空格数量,再用双指针法,从后往前遍历。
class Solution {
public:
string replaceSpace(string s) {
//先寻找空格数量
int length=s.size();
int spaceCount=0;
for(int i=0;i<s.size();i++)
{
if(s[i]==' ') spaceCount++;
}
s.resize(length+2*spaceCount);
int j=s.size()-1;
for(int i=length-1;i>=0;i--)
{
if(s[i]==' ')
{
s[j]='0';
s[j-1]='2';
s[j-2]='%';
j-=3;
}
else
{
s[j]=s[i];
j--;
}
}
return s;
}
};
2、左旋转字符串
class Solution {
public:
void reverse(string& s,int start,int end){
while(start<end)
{
swap(s[start],s[end]);
start++;
end--;
}
}
string reverseLeftWords(string s, int n) {
reverse(s,0,n-1);
reverse(s,n,s.size()-1);
reverse(s,0,s.size()-1);
return s;
}
};