LeetCode Reverse Words in a Stringシリアルの文字を反転

3981 ワード

 1 class Solution {

 2 public:

 3     void reverseWords(string &s) {

 4             string end="",tem="";

 5             char *p=&s[0];

 6             while(*p!='\0'){

 7                 while(*p==' ')                // , 

 8                     p++;

 9                 while(*p!=' '&&*p!='\0'){    //

10                     tem=tem+*p;

11                     p++;

12                 }

13                 while(*p==' ')                //

14                     p++;

15                 if(*p!='\0')        // 

16                     tem=' '+tem;

17                 end=tem+end;

18                 tem="";            // 

19             }

20             s=end;

21     }

22 };

題意:文字列の中の字を逆順に並べ、各字の間にスペースがあり、列の前と列の尾にスペースがありません.字の順番は変えなくてもいいです.変わったのは字が列の中にある順番です.
構想:列の前と後ろのスペースをフィルタリングし、ポインタで後からスキャンし、一時列で字を保存し、1文字が満たされたときに最終的な列の前に追加します.この列をスキャンしたら、最終的な列をsに割り当てます.