描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
输入描述:
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述:
得到逆序的句子
示例1
输入:
I am a boy
输出:
boy a am I
方法一:反向逐个输出单词(C++)
核心思想:
首先将单词保存到容器中,然后反向输出容器中的单词
图解:
核心代码:
#include<iostream>
#include<string>
#include<vector>
using namespace std;
void reverse_word(vector<string> words){
int i,n = words.size();
for(i=n-1;i>=0;i--)
cout<<words[i]<<" ";
}
int main(){
string word;
vector<string> words;
while(cin>>word)
words.push_back(word);
reverse_word(words);
return 0;
}
时间复杂度O(n)
空间复杂度O(n)
方法二:缓冲区接收数据并分割单词反向输出(java)
核心思想:
控制台向输入缓冲区输入数据,根据空格分割输入单词,然后反向输出单词来达到句子逆置的效果
核心代码:
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
String[] words = line.split(" ");
for(int i=words.length-1;i>=0;i--)
System.out.print(words[i]+" ");
}
}
时间复杂度O(n)
空间复杂度O(n)