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に割り当てます.