反转单词
原题链接:反转单词
思路:1.使用双指针,从后往前获取所有单词,依次添加到新变量string后
2.先去除前后空格,中间剩一个空格,整体反转,而后使用双指针,将每个单词反转一次。
class Solution {
public:
string removeSpace(string s){
//在移除所有空格前提下,在每个单词中间中间加上一个空格
int last =0;
int fast =0;
while(fast<s.size()){
if(s[fast] != ' '){
s[last] = s[fast];
last++;
}else if(last>0 && s[last-1] !=' '){
s[last] = s[fast];
last++;
}
fast++;
}
if(s[last-1] ==' ')
last--;
s.resize(last);
return s;
}
string reverseWords(string s) {
//去除空格
s = removeSpace(s);
reverse(s.begin(),s.end());
int last=0;
int fast = 0;
while(fast<=s.size()){
if(fast!=s.size() && s[fast]!=' ' ) {
fast++;
continue;
}
reverse(s.begin()+last,s.begin()+fast);
last=fast+1;
fast++;
}
return s;
}
};
右旋字符串
原题链接:右旋字符串
思路:截取后k个字符,定义新字符串,并将原字符串拼接,重新设置其大小。
#include<iostream>
using namespace std;
int main(void){
string s;
int n;
cin>>n>>s;
int size = s.size();
string t = s.substr(size-n,size - 1);
string rs = t + s;
rs.resize(size);
cout<<rs;
return 0;
}