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.
分析:
其实这一题比151 Reverse Words in a String 更简单,对一个字符串进行反转,没有多余的空格。
只需要对字符串中的每一个单词执行反转即可。
void _reverse(char *pStart, char *pEnd)
{
if(pStart >= pEnd)
return;
char c ;
while(pStart < pEnd){
c = *pStart;
*pStart = *pEnd;
*pEnd = c;
pStart++;
pEnd--;
}
}
char* reverseWords(char* s) {
int length = strlen(s);
if(length <= 1)
return s;
char *pStart = s;
char *pEnd = s+length -1;
char *p ;
while(pStart <pEnd){
p=pStart;
while(*p!= ' ' && *p!='\0') p++;
_reverse(pStart, p-1);
pStart = ++p;
}
return s;
}