欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

牛客网华为机试 【【中级】单词倒排】

程序员文章站 2024-03-11 22:20:13
...

题目描述

对字符串中的所有单词进行倒排。

说明:

  1. 每个单词是以26个大写或小写英文字母构成;
  2. 非构成单词的字符均视为单词间隔符;
  3. 要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
  4. 每个单词最长20个字母;

输入描述:
输入一行以空格来分隔的句子

输出描述:
输出句子的逆序

示例
输入

I am a student

输出

student a am I

题目分析

非单词字符均是分隔符:
使用正则表达式匹配到非单词字符即可,然后使用 String.split() 方法切分,之后再将单词倒序拼接即可。

完成后,我测试了一把, 输出格式不对!!
纳尼??
最后,百度查了下,这题还要去除最终结果的两端的空格!!

因此,我的最终输出成了:

// sb 是 StringBuilder 的对象
System.out.println(sb.toString().trim());

java 代码

import java.util.Scanner;

/**
 * Created by Feng on 2020/2/18 16:31
 * CurrentProject's name is java8
 * 单词倒排
 */
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        while(input.hasNextLine()){
            String line = input.nextLine();
            // 按照 1 或多个空格切分字符串,包含 1 或多个非字母
            String[] words = line.split("[\\s]+|[^a-zA-Z]+");

            StringBuilder sb = new StringBuilder();
            for (int i = words.length - 1; i > 0; i--) {
                sb.append(words[i]).append(" ");
            }
            sb.append(words[0]);

            System.out.println(sb.toString().trim());

        }
    }
}

结果

牛客网华为机试 【【中级】单词倒排】

相关标签: 牛客网华为机试