首页 > 代码库 > 【leetcode】Reverse Words in a String
【leetcode】Reverse Words in a String
问题:给定一个字符串,字符串中包含若干单词,每个单词间由空格分隔,将单词逆置,即第一个单词成为最后一个单词,一次类推。
说明:字符串本身可能包含前导空格或后导空格,单词间可能包含多个空格,要求结果中去掉前导和后导空格,单词间空格只保留一个。
与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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。