字串student a am i
阿新 • • 發佈:2018-12-05
字串翻轉
過程
區域性反轉
整體翻轉
// student a am i
// 第一步--區域性翻轉
// tmeduts a ma i
// 第二步--整體翻轉
程式碼
#include<stdio.h>
#include<assert.h>
void Reverse(char* start, char* end)
{
//翻轉字串
while (start < end)
{
*start ^= *end;
*end ^= *start;
*start ^= *end;
start++;
end--;
}
}
char* ResverStr(char *str)
{
assert(str);
char* end = str;
char* start= end ;
while (*end)
{
if (*end == ' ') //以空格為節點,遇到空格將前一個字串翻轉
{
Reverse(start, end-1);
end = end + 1;
start = end;
}
end++;
}
Reverse(start, end - 1); //由於遇到"\0" x迴圈結束,最後一個字串要翻轉
Reverse(str, end - 1);//整體翻轉
return str;
}
int main()
{
char str[] = "student a am i";
// tneduts a ma i
//ResverStr(str);
printf("%s\n",ResverStr(str));
return 0;
}