给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
数组比指针好用。
#define swap(a,b) do{char _x; _x = s[a]; s[a] = s[b]; s[b] = _x;}while(0)
char* reverseWords(char* s) {
char *ret = s;
int i = 0, j = 0, k = 0;
for(i = 0;; i++) {
if(s[i] == ' ' || s[i] == '\0') {
k = i - 1;
for(; j < k; j++,k--)
swap(j,k);
j = i + 1;
}
if(s[i] == '\0')
break;
}
return ret;
}