557. 反转字符串中的单词 III
难度 简单
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:"Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"
提示:
- 在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
题解
这道题就是在字符串的单词翻转,通过循环加判断就可以实现。当遇到空格或者字符串末尾就翻转,这里采用双制作进行翻转
class Solution {
public:
string reverseWords(string s) {
int wordStart=0;
int wordEnd=0;
for(int i=0;i<=s.size();i++){//循环遍历
if(s[i]==' '||i==s.size()){//如果等于空格或者到了字符串末尾
int start=wordStart;
int end=wordEnd-1;
while(start<end){//开始翻转单词
char temp=s[start];
s[start]=s[end];
s[end]=temp;
start++;
end--;
}
wordStart=wordEnd=i+1;//重置单词首指针和尾指针
}else{//不等于空格或者字符串末尾,继续遍历
wordEnd++;
}
}
return s;
}
};