要求:给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
源代码:
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include <sstream>
using namespace std;
string reverseWords(string s)
{
vector<string> result;
string reverse_result;
string tab_blank = " ";
string sub_string = "";
char tab =' ';
int k = 0;
for (int i = 0; i < s.size(); i++)
{
if (s[i]!=tab)
{
sub_string = sub_string + s[i];
if (i == s.size() - 1)
{
result.push_back(sub_string);
}
}
else
{
if (sub_string.empty())
{
continue;
}
else
{
result.push_back(sub_string);
sub_string = "";
}
}
}
for (int j = 0; j < result.size(); j++)
{
string tmp = "";
for (int m = result[j].size()-1; m >=0; m--)
{
tmp = tmp + result[j][m];
}
if (j != result.size() - 1)
{
reverse_result=reverse_result+tmp;
reverse_result = reverse_result + tab_blank;
}
else
{
reverse_result = reverse_result + tmp;
}
}
return reverse_result;
}
int main()
{
string str1 = "Let's take LeetCode contest";
string result=reverseWords(str1);
cout << result<< endl;
system("pause");
return 0;
}
输出结果:
s'teL ekat edoCteeL tsetnoc