要求:
Examples:
spinWords("Hey fellow warriors") => "Hey wollef sroirraw"
spinWords("This is a test") => "This is a test"
spinWords("This is another test") => "This is rehtona test"
Write a function that takes in a string of one or more words, and returns the same string, but with all five or more letter words reversed (like the name of this kata).?????
解法一:
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
std::string spinWords(const std::string& str)
{
istringstream strcin{ str };
string s;
vector<string> vs;
while (strcin >> s)
vs.push_back(s);
vector<string>::iterator ib = vs.begin(), ie = vs.end();
for (; ib < ie; ib++) {
if ((*ib).size() >=5)
reverse((*ib).begin(), (*ib).end());
}
string answer;
for (int i = 0; i < vs.size(); i++) {
answer += vs[i];
answer += " ";
}
answer.pop_back();
return answer;
}// spinWords
????????? 优秀解法:
std::string spinWords(const std::string &str)
{
std::string res;
std::istringstream ss(str);
std::string temp;
while(ss >> temp){
if(temp.length() >= 5)
std::reverse(temp.begin(), temp.end());
res += temp + " ";
}
res.pop_back();
return res;
}// spinWords
??????????????
|