华为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
将一个英文语句以单词为单位逆序排放。例如“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; }