1009 说反话 (20 分)
题目描述:
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
解题思路:
根据题意,我们只需要将字符串中的单词拆开,然后逆序拼接起来即可。
代码:
- Python: 简洁就是美!
def main():
print(" ".join(input().split(' ')[::-1]))
# input()接收输入的字符串。因为单词之间仅有一个空格,split(' ')就能将这个字符串中的单词分割为列表。
# 然后[::-1]翻转整个列表,最后使用join函数拼接翻转后的字符串。
if __name__ == '__main__':
main()
- C++ : 天下武功,无坚不摧,唯快不破!
#include<iostream>
#include<vector>
using namespace std;
int main(){
//freopen("in.txt", "r", stdin);
string input_string;
getline(cin, input_string);
input_string.push_back(' ');
vector<string> result;
int start = 0;
for(int i=0; i<input_string.length(); ++i){
if(input_string[i] == ' '){
result.push_back(input_string.substr(start, i-start));
start = i+1;
}
}
for(int i=result.size()-1; i>0; --i){
cout << result[i] << " ";
}
cout << result[0] << endl;
return 0;
}
- Java: ┓( ´∀` )┏
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input_str = in.nextLine();
String[] str_array = input_str.split("\\s");
// 将字符串分隔开, "\\s"是空格的正则表达式写法
in.close();
// 逆序输出这些单词
for(int i=str_array.length-1; i>0; --i) {
System.out.print(str_array[i] + " ");
}
System.out.print(str_array[0]);
}
}
易错点:
- 注意是将字符串中的单词的顺序翻转而不是整个字符串翻转。
总结:
- 代码是写给人看的,顺便能够执行而已。