第一步将不是字母的字符替换成空格,再用split进行分隔,倒序输出就可以了。需要注意的是String的isBlank()方法在Java 11可以用,牛客的这个是不可以用的。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {
            String origin = in.nextLine();
            StringBuilder converted = new StringBuilder();
            for(int j = 0; j < origin.length(); j++){
                char c = origin.charAt(j);
                if((c >= 'a' && c <= 'z')||(c >= 'A' && c <= 'Z')){
                    converted.append(c);
                }
                else{
                    converted.append(" ");
                }
            }
            String[] str = converted.toString().split(" ");
            StringBuilder res = new StringBuilder();
            for(int i = str.length - 1; i >= 0; i--){
                //str[i].isBlank();
                if(!str[i].trim().isEmpty()){
                    res.append(str[i]);
                    res.append(" ");
                }
            }
            System.out.println(res.toString().trim());
        }
    }
}