题目;
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格
解题思路:
因为没有多余空格,可以先声明一个空的目标字符串,使用字符流处理类,找到一个单词后,反转,加到目标字符串上去,同时加上一个空格,最后删除最后面的空格即可。
代码:
1 class Solution { 2 public: 3 string reverseWords(string s) { 4 string res="",t=""; 5 istringstream is(s); 6 while(is>>t){ 7 reverse(t.begin(),t.end()); 8 res = res + t + " "; 9 } 10 res.pop_back(); 11 return res; 12 } 13 };
相关知识:
1.字符流处理类istringstream
使用代码istringstream is(s)把字符串转化为字符流is。
使用代码while(is>>t)将字符流is中的以空格分开的单词读入字符串t中(不论几个空格都一样)。
2.res.pop_back()
对目标字符串使用pop_back()删除最后一个字符。