问题:给定一个字符串,字符串中包含若干单词,每个单词间由空格分隔,将单词逆置,即第一个单词成为最后一个单词,一次类推。
说明:字符串本身可能包含前导空格或后导空格,单词间可能包含多个空格,要求结果中去掉前导和后导空格,单词间空格只保留一个。
与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