题目:
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
题解:
这个题就是输入一个带空格的字符串(题目已经帮我们输入了),利用stringsteam我们可以先把这个字符串中的空格给删除,然后对这个字符串中的每个单词进行反转处理,最后把每个单词组合起来,中间加上必要的单个空格,最后再删除一个多余的空格就行。(注意上面的黑体加粗)
class Solution {
public:
string reverseWords(string str) {
// 定义用于返回的字符串
string str_for_return = "";
//把字符串放入字符串流中
stringstream ss(str);
string temp = "";
while(ss>>temp)
{
//利用算法头文件的反转函数对每个单词进行反转
reverse(temp.begin(),temp.end());
//利用一个空字符串把这些反转后的给组合起来
str_for_return +=(temp+" ");
}
//最终字符串会多带一个空格,利用erase函数删除就行,也可以用substring();
str_for_return.erase( str_for_return.end()-1);
return str_for_return;
}
};
题目已经给了字符串,但是为了以后大家写题方便,在这里给大家提供输入带空格字符串的方法
string str = "";
getline(cin,str);