牛客网-华为机试练习题 13
题目描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
接口说明
/**
* 反转句子
*
* @param sentence 原句子
* @return 反转后的句子
*/
public String reverse(String sentence);
输入描述:
将一个英文语句以单词为单位逆序排放。
输出描述:
得到逆序的句子
示例1
输入
I am a boy
输出
boy a am I
思路:
逆序就两种思路:
- 一种是使用栈,对每个元素进行入栈,然后出栈。
- 一种是使用数组,从后往前进行遍历,- 从length-1遍历到0,闭区间
这里是对句子的单词进行逆序,很自然的,在逆序前面对句子使用split进行划分,参数是空格
解决代码
import java.util.Stack;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Stack stack = new Stack();
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str = sc.nextLine();
String[] s = str.split(" ");
for(int i=0;i<s.length;i++){
stack.push(s[i]);
}
while(!stack.isEmpty()){
System.out.print(stack.pop()+" ");
}
System.out.println();
}
}
}
import java.util.*;
public class Main{
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
String str=scan.nextLine();
String res=reverse(str);
System.out.println(res);
}
public static String reverse(String str)
{
String[] s=str.split(" ");
StringBuilder sb=new StringBuilder();
for(int i=s.length-1;i>0;i--)
{
sb.append(s[i]);
sb.append(" ");
}
sb.append(s[0]);
return sb.toString();
}
}
来源:https://blog.csdn.net/weixin_41500849/article/details/99573444