您的位置:首页 > 编程语言

[编程题]句子逆序

2016-12-09 12:51 204 查看
Talk is cheap, show me the code

一、问题描述

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

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

接口说明

/**

* 反转句子

*

* @param sentence 原句子

* @return 反转后的句子

*/

public String reverse(String sentence);

输入描述:

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

输出描述:

得到逆序的句子

输入例子:

I am a boy

输出例子:

boy a am I

二、问题分析

这是文本处理的方法,可以一次读入一行,就相当于一个句子,然后在用stringstream来读取一行中的每个单词,然后再考虑逆序每个单词,这里存放每个单词可以采用多种数据结构,最直观是采用栈stack,也可以用其他的vector,list,deque等等。另一种思路是可以把每个单词作为一个输入,但是这种无法判断句子的结束,只能说每次输入只能输入一个句子,不能同时输入多个句子。

#include <iostream>
#include <string>
#include <sstream>
#include <stack>
using namespace std;

int main()
{
string s;
while (getline(cin, s))
{
stack<string> st;
istringstream ss(s);
string str;
while (ss >> str)
{
st.push(str);
}
cout << st.top();
st.pop();
while (!st.empty())
{
cout << " " << st.top();
st.pop();
}
cout << endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程