您的位置:首页 > 其它

【leetcode】Reverse Words in a String

2014-05-21 19:27 162 查看
问题:给定一个字符串,字符串中包含若干单词,每个单词间由空格分隔,将单词逆置,即第一个单词成为最后一个单词,一次类推。

说明:字符串本身可能包含前导空格或后导空格,单词间可能包含多个空格,要求结果中去掉前导和后导空格,单词间空格只保留一个。

与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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: