牛客网-华为机试练习题 13

落爺英雄遲暮 提交于 2019-11-27 07:54:15

牛客网-华为机试练习题 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();
    }
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!