一:题目
Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.
Example 1:
Input: "Let's take LeetCode contest" Output: "s'teL ekat edoCteeL tsetnoc"
Note: In the string, each word is separated by single space and there will not be any extra space in the string.
二:解体分析
题目要求反转一句话中的每一个单词,单词与单词之间用一个空格分隔,保持原始句子单词和空格的位置
如果字符串大小小于等于1,直接返回
否则,需要从前到后遍历字符串,找到空格位置,记录单词的开始位置和结束位置,反转单词,直到遍历完该句子
三:代码实现
class Solution {
public:
string reverseWords(string s) {
//1.如果字符串长度<=1,直接返回
//2.否则,从前向后遍历字符串,记录每一个单词的开始位置和结束位置,反转
if(s.length()<=1)
return s;
string reverseString;
int begin=0;
int end=0;
int i;
while(true){
//结束while循环有两种方式 1.找到空格位置 2.end=字符串长度
while(end <s.length() && s[end]!=' ')
end++;
for(i=end-1;i>=begin;i--)
reverseString+=s[i];
if(end!=s.length())
reverseString+=' ';
else
break;
begin=end+1;
end++;
}
return reverseString;
}
};