小米的一道笔试题
输入“hello xiao mi”,输出“mi xiao hello”
很基础的一道题,个人觉得不好做的地方在于,如何输入带空格的字符串;
substr中,第二个参数表示个数。
下面的代码不知道时间上能不能通过。
void reverse(const string& line)
{
string result = " ";
int i = 0;
int k = 0;
for (int j = 0; j < line.size(); j++)
{
if (line[j] == ‘ ‘)
{
k++;
if (k == 1)//如果是第一个串,后面不要加空格
result.insert(0, line.substr(i, j));
else
{ //否则后面加空格
result.insert(0, line.substr(i, j - i + 1));
}
i = j + 1;
}
if (j == line.size() - 1)
{
//最后一个需要补空格
result.insert(0, line.substr(i, j - i + 1) + " ");
}
}
cout << result;
}
int main()
{
string line;
while (getline(cin,line))
{
reverse(line);
cout << endl;
}
return 0;
}
原文:http://www.cnblogs.com/573177885qq/p/5904244.html