LeetCode Reverse Words in a String 将串中的字翻转
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 };
题意:将字符串中的字按反序排列,每个字中间有一个空格,串前和串尾无空格。字的顺序不用改变,改变的是字在串中的顺序。
思路:过滤串的前面和后面的空格,用指针从前往后扫, 再用一个临时串保存字,满一个字的时候就添加在将最终的串的前面。扫完该串就将最终的串赋给s。