首页 > 代码库 > 剑指Offer41 反转单词顺序,单词字符顺序不变

剑指Offer41 反转单词顺序,单词字符顺序不变

 1 /************************************************************************* 2     > File Name: 41_ReverseWords.c 3     > Author: Juntaran 4     > Mail: JuntaranMail@gmail.com 5     > Created Time: 2016年09月04日 星期日 16时18分34秒 6  ************************************************************************/ 7  8 #include <stdio.h> 9 10 // 反转单词11 void ReverseWord(char* left, char* right)12 {13     if (left== NULL || right==NULL)14         return;15     while (left < right)16     {17         char temp = *left;18         *left = *right;19         *right = temp;20         21         left ++;22         right --;23     }24 }25 26 void Reverse(char* str)27 {28     if (str == NULL)29         return;30     31     char* left = str;32     char* right = str;33     while (*(right+1) != \0)34         right++;35     36     // 先反转整个句子37     ReverseWord(left, right);38     39     // 再逐步反转每个单词40     left = str;41     right = str;42     while (*left != \0)43     {44         if (*left ==  )45         {46             left ++;47             right++;48         }49         else if (*right==  || *right==\0)50         {51             ReverseWord(left, --right);52             left = ++right;53         }54         else55         {56             right ++;57         }58     }59 }60 61 int main()62 {63     char str[] = "I am a student. ";64     Reverse(str);65     66     printf("%s\n", str);67     return 0;68 }

 

剑指Offer41 反转单词顺序,单词字符顺序不变