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.
算法分析:找到一个空格,然后把之前的字符串翻转。
C语言版
这里有一点比较有趣,如果把求字符串长度strlen(s)不声明变量,每次循环都调用就会超时,以前还真没遇到过,以后需要注意。
char* reverseWords(char* s) {
int i, j, start = 0, end;
int len = strlen(s);
for(i = 0, j = 0; i <= len; i++)
{
int t;
if(s[i] == ' ' || i == len)
{
end = i - 1;
for(j = start; j <= (start + end) / 2; j++)
{
char temp = s[j];
s[j] = s[start + end -j];
s[start + end - j] = temp;
}
start = i + 1;
}
}
return s;
}
Python版
还是Python方便,这里需要注意字符串翻转操作s[: : -1],表示s[begin : end : step],由于起点和终点是整个字符串,步长为-1就实现了反向操作。
class Solution(object):
def reverseWords(self, s):
"""
:type s: str
:rtype: str
"""
return ' '.join(s.split()[::-1])[::-1]