题目
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。**输入格式:**测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
**输出格式:**每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come输出样例:
Come I Here World Hello
解析
反转单词顺序但是不反转单词内容
C++倒序入栈的方式,重新构造字符串
Java和Python则直接将其分割成链表,reverse()
一下后输出即可
代码
C++解法
#include <cstring> #include <iostream> const int maxn = 105; char s[maxn]; char stackString[maxn]; int stackPos; char outputString[maxn]; int outputPos; void output() { while (stackPos != 0) outputString[outputPos++] = stackString[--stackPos]; outputString[outputPos++] = ' '; } int main() { scanf("%[^\n]", s); int len = strlen(s); stackPos = 0; outputPos = 0; for (int i = len - 1; i >= 0; --i) { if (s[i] == ' ') { output(); } else { stackString[stackPos++] = s[i]; } } output(); outputString[--outputPos]= '\0'; printf("%s\n", outputString); return 0; }
Python解法
stringList = input().split(" ") stringList.reverse() print(" ".join(stringList))
Java解法
import java.util.*; class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = in.nextLine(); List<String> list = Arrays.asList(s.split(" ")); Collections.reverse(list); boolean isFirst = true; for (String c : list) { if (isFirst) { isFirst = false; } else { System.out.print(" "); } System.out.print(c); } System.out.print("\n"); in.close(); } }