[C/C++筆面試]程式設計實現字串中各單詞的翻轉
阿新 • • 發佈:2018-12-26
/*********************************************************
- Copyright (C): 2016
- File name : revstr.c
- Author : - Zxn -
- Date : 2016年08月28日 星期日 10時35分39秒
- Description : 程式設計實現字串中各單詞的翻轉
* *******************************************************/
#include <stdio.h>
void swap(char *strone, char *strtwo)
{
*strone ^= *strtwo;
*strtwo ^= *strone;
*strone ^= *strtwo;
}
void revstr(char *str)
{
char *start = str;
char *end = str;
char *ptr = str;
//遍歷查詢字串
while (*ptr++ != '\0')
{
//找到一個單詞
if (*ptr == ' ' || *ptr == '\0')
{
//end指向單詞尾部
end = ptr - 1;
//完成區域性交換
while (start < end)
{
swap(&(*start++), &(*end--));
}
start = end = ptr + 1;
}
}
//I ma morf iahgnahS
//完成整體交換
start = str, end = ptr - 2;
while(start < end)
{
swap(&(*start++), &(*end--));
}
//Shanghai from am I
}
int main()
{
char str[] = "I am from Shanghai";
printf("str = %s\n",str);
revstr(str);
printf("src = %s\n", str);
return 0;
}