把句子中的字符串按照空格reverse
例如:the son of Mary.
结果为:Mary. of son the
解决
思路,先将整个字符串整体reverse,然后再从头遍历,找到空格,将之前字符串reverse,
此思路不需要额外空间,实现如下:
char* swapw(char *src,int len ,int s)
{
char tmp;
int i = s;
int j = len-1;
for(i=s;i<(len+s)/2;i++){
if(i >= j)
break;
tmp = *(src +i);
*(src +i) = *(src + j);
*(src +j) = tmp;
j--;
}
return src;
}
char* reverse(char *src, int len)
{
int i,s;
s = 0;
src = swapw(src,len,0);
for(i=0;i<len;i++){
if(*(src+i) == ' '){
src = swapw(src,i,s);
s = i+1;
}
}
src = swapw(src,i,s);
printf("%s/n",src);
}
int main(int argc,char **argv)
{
char src[20] = "hello ,our world";
printf("%s/n",src);
reverse(src,strlen(src));
return 0;
}