题目
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:“Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”
提示:
在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
题解
- 利用空格将字符串中的单词分离,存储到新数组中,遍历数组中单词,调用单词内部反转的函数,最后加入新的字符串中
- 比较好的方法,就是在原字符串的基础上,利用双指针
- 本题可以学习string字符串的相关应用
代码
class Solution {
public:
void reverseString(string&s) {
int n=s.size();
int l=0,r=n-1;
while(l<r)
{
swap(s[l],s[r]);
l++;
r--;
}
};
string reverseWords(string s) {
string ss="";
vector<string> res;
string result;
//将字符串读到input中
stringstream input(s);
//依次输出到result中,并存入res中
while(input>>result)
res.push_back(result);
//输出res
for(int i=0;i<res.size();i++)
{
reverseString(res[i]);
ss=ss+res[i];
if(i<res.size()-1)
ss=ss+' ';
}
return ss;
}
};