您的位置:首页 > 其它

华为oj初级 句子逆序

2017-03-16 09:18 330 查看
描述

将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”

所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符

接口说明

/**

* 反转句子

*

* @param sentence 原句子

* @return 反转后的句子

*/

public String reverse(String sentence);

知识点 数组

运行时间限制 10M

内存限制 128

输入

将一个英文语句以单词为单位逆序排放。

输出

得到逆序的句子

样例输入 I am a boy

样例输出 boy a am I

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<cmath>

using namespace std;

int main(){
string s;
getline(cin,s);
int cnt = 0;
for (int i = s.size() - 1; i >= 0; i--){
if (isalpha(s[i])) cnt++;
else{
cout << s.substr(i + 1, cnt) << " ";
cnt = 0;
}
}
cout << s.substr(0, cnt);
return 0;
}


#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<cmath>
#include<unordered_map>
using namespace std;

int main(){
string s;
getline(cin, s);
reverse(s.begin(), s.end());
int pos;
string str;
int cnt = count(s.begin(), s.end(), ' ');
for (int i = 0; i < cnt; i++){
pos=s.find(' ');
str=s.substr(0, pos);
reverse(str.begin(), str.end());
cout << str<<" ";
s = s.substr(pos + 1);
}
reverse(s.begin(), s.end());
cout << s << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: