题目要求将一行字符串中的所有单词首尾翻转过来输出,单词间以空格分隔。
总时间限制: 1000ms 内存限制: 65536kB
输入一个句子(一行),将句子中的每一个单词翻转后输出。
只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。
翻转每一个单词后的字符串,单词之间的空格需与原文一致。
hello world
olleh dlrow
首先要区分句子中的单词,以空格分割来获取,之后每次读入一个单词,并将其翻转后输出,再继续下一个单词的读入,直到句子结尾。
#include <iostream>
#include <string>
using namespace std;
int main() {
char cstr[501];
cin.getline(cstr, 501);
string str(cstr);
int i, j;
for (i = 0; i < str.length(); ++i) {
if (str[i] == ' ') {
cout << str[i];
continue;
}
string sub;
while (str[i] != ' ' && i < str.length()) {
sub.push_back(str[i++]);
}
for (j = sub.length() - 1; j >= 0; --j) {
cout << sub[j];
}
i--;
}
cout << endl;
return 0;
}
4104.cpp 代码长度:438B 内存:200kB 时间:2ms 通过率:83% 最小内存:200kB 最短时间:0ms
读入含有空格的字符串需要使用cin.getline,之后从左到右遍历,判断空格,之后读入一个单词,用数组存储后反序输出,如此直到句子结尾。
有任何的改进意见欢迎大家在微信平台公众号主页面留言或者发表issue。