首页 > 其他 > 详细

【leetcode】Reverse Words in a String

时间:2014-05-22 18:49:08      阅读:433      评论:0      收藏:0      [点我收藏+]

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

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


与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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!