问题:给定一个字符串,字符串中包含若干单词,每个单词间由空格分隔,将单词逆置,即第一个单词成为最后一个单词,一次类推。
说明:字符串本身可能包含前导空格或后导空格,单词间可能包含多个空格,要求结果中去掉前导和后导空格,单词间空格只保留一个。
与rotate函数类似,先逆置每个单词,再将所有字符串逆置。
void reverseWords(string &s) { if(s.size() == 0) return; char blank = ' '; size_t len = s.size(); size_t begin = s.find_first_not_of(blank); size_t end = s.find_last_not_of(blank); //erase(start,len); s.erase(end + 1, len - end); s.erase(0, begin); string::iterator sit1 = s.begin(); while (sit1 != s.end()) { string::iterator cur = sit1; while(cur != s.end() && *cur == blank ){ s.erase(cur); } //get while(cur != s.end() && *cur != blank ) ++cur; reverse(sit1, cur); if(cur != s.end()) ++cur; sit1 = cur; } reverse(s.begin(), s.end()); return; }
【leetcode】Reverse Words in a String,布布扣,bubuko.com
【leetcode】Reverse Words in a String
原文地址:http://blog.csdn.net/shiquxinkong/article/details/26502433