PAT (Basic Level) Practice 乙级 1009
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
思路一:实际上就是将元素分别逆向输出。
起初想到的是Java语言实现方法:
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
String sentence= input.nextLine();
String [] strings = sentence.split(" ");
for(int i=strings.length-1;i>0;i--)
System.out.print(strings[i]+" ");
System.out.println(strings[0]);
}
}
思路二:观察元素输入输出的规律,最先输入的最后输出——先进后出,这样通过栈的结构就可以啦。
代码如下:
#include <iostream>
#include<stack>
using namespace std;
int main()
{
stack<string> sta;
string s;
while(cin >> s)
sta.push(s);
cout << sta.top();
sta.pop();
while(!sta.empty())
{
cout << " " << sta.top();
sta.pop();
}
return 0;
}