输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。例如输入字符串“I am a developer.”,区间[0,3],则输出“developer.a am I”。
输入描述:
使用换行隔开三个参数,第一个参数为英文文章内容即英文字符串,第二个参数为翻转起始单词下标(下标从0开始),第三个参数为结束单词下标。
输出描述:
翻转后的英文文章片段,所有单词之间以一个半角空格分隔进行输出。
示例1:
输入:
I am a developer.
1
2
输出:
I a am developer.
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main() {
int start, end, n = 0;
string str, word, nstr;
getline(cin, str);
stringstream ss(str);
cin>>start>>end;
vector<string> arr;
while (ss>>word) {
arr.push_back(word);
}
if (start>=arr.size() || start>end || end>arr.size()) {
cout<<str<<endl;
return 0;
}
for (int i=0; i<start; ++i) {
if (nstr.size() == 0) {
nstr = arr[i];
} else {
nstr = nstr + " " + arr[i];
}
}
for (int i=end; i>=start; --i) {
if (nstr.size() == 0) {
nstr = arr[i];
} else {
nstr = nstr + " " + arr[i];
}
}
for (int i=end+1; i<arr.size(); ++i) {
if (nstr.size() == 0) {
nstr = arr[i];
} else {
nstr = nstr + " " + arr[i];
}
}
cout<<nstr<<endl;
return 0;
}