题解 | #单词倒排#

单词倒排

https://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836

我本地的JDK是16 下面这个正则表达式 分词是没有问题的
// [I, am, a, student]
System.out.println(Arrays.toString("I am a student.".split("[^[a-zA-Z]]+")));
但是牛客的JDK是 1.8 分词是有问题的
// [, , , , .]
System.out.println(Arrays.toString("I am a student.".split("[^[a-zA-Z]]+")));
改成下面这样就行
import java.util.*;
/**
 * @author hll[yellowdradra@foxmail.com]
 * @date 2022-09-30 15:53
 **/
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Arrays.stream(in.nextLine()
                // 分割字符串得到一个单词数组
                .split("[^a-zA-Z]+"))
                // 反转数组
                .sorted((x, y) -> -1)
                // 合并数组
                .reduce((x, y) -> x + " " + y)
                // 打印数组
                .map(System.out::printf);
    }
}


下面是双指针解法
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        StringBuilder sb = new StringBuilder();
        int len = str.length(), l = 0, r = 0, i = len - 1;
        while (i >= 0) {
            while (i >= 0) {
                if (isLetter(str.charAt(i))) {
                    r = i + 1;
                    break;
                }
                i--;
            }
            while (i >= 0) {
                if (!isLetter(str.charAt(i))) {
                    l = i + 1;
                    i--;
                    break;
                }
                if (isLetter(str.charAt(i)) && i == 0) {
                    l = 0;
                    i--;
                    break;
                }
                i--;
            }
            sb.append(str, l, r).append(" ");
        }
        System.out.println(sb);
    }

    public static boolean isLetter(char c) {
        return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z');
    }
}


#华为笔试#
全部评论

相关推荐

10-07 20:48
门头沟学院 Java
不敢追175女神:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务