翻转字符串里的单词
#include <stdio.h>
#include <string.h>
void reverse(char s[], int l, int r)
{
for(char c = 0; l < r; l++, r--)
c = s[l], s[l] = s[r], s[r] = c;
}
int removeExtraSpaces(char s[], int n)
{
int j = 0;
for(int i = 0; i < n; i++)
{
if(j && s[i] != ' ') s[j++] = ' ';
for(; i < n && s[i] != ' '; s[j++] = s[i++]);
}
s[j] = '\0';
return j;
}
const char* reverseWords(char* s)
{
int n = removeExtraSpaces(s, strlen(s));
reverse(s, 0, n - 1);
for(int i = 0, j = 0; i <= n; i++)
{
if(i == n || s[i] == ' ')
{
reverse(s, j, i - 1);
j = i + 1;
}
}
return s;
}
const char* reverseWords(char* s)
{
int n = removeExtraSpaces(s, strlen(s));
reverse(s, 0, n - 1);
int j = 0;
for(int i = 0; i <= n; i++)
for(; i <= n && (i == n || s[i] == ' '); reverse(s, j, i - 1), j = i + 1, i++);
int j = 0;
for(int i = 0; i <= n; )
{
for(; i <= n && (i == n || s[i] == ' '); reverse(s, j, i - 1), j = i + 1, i++);
for(; i <= n && (i != n && s[i] != ' '); i++);
}
return s;
}