按索引范围翻转文章片段去除多余空格

输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。例如输入字符串"I am a developer. ",区间[0,3],则输出"developer. a am I"。
输入描述:
使用换行隔开三个参数,第一个参数为英文文章内容即英文字符串,第二个参数为翻转起始单词下标(下标从 0 开始),第三个参数为结束单词下标。
输出描述:
翻转后的英文文章片段所有单词之间以一个半角空格分隔进行输出
示例 1:
输入
I am a developer. 1
2
输出
I a am developer. 示例 2:
输入
hello world!
0
1
输出
world! hello
说明
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:
输入
I am a developer. 0
3
输出
developer. a am I
说明
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
示例 4:
输入
Hello!
0
3
输出
EMPTY
说明
指定翻转区间只有一个单词或无有效单词,则统一输出"EMPTY"

如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。这个问题怎么解决。

private static String reverse(String articles, int start, int end) {
        String[] art = articles.trim().split(" ");
        if(art.length==1 || art.length==0) {
            return "EMPTY";
        }
        for (int i = 0; i < art.length; i++) {
            art[i] = art[i].trim();
            System.out.print(art[i]+",");
        }
        try {
            for (int i = start; i <= Math.ceil((end-start)/2)+start; i++) {
                String temp = art[i];
                art[i] = art[start+end-i];
                art[start+end-i] = temp;
            }
        }catch (Exception e) {
            return "EMPTY";
        }
        String s = "";
        for (int i = 0; i < art.length; i++) {
            s += art[i]+" ";
        }
        return s.trim();
    }
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String article = scanner.nextLine();
        int start = scanner.nextInt();
        int end = scanner.nextInt();
        String s = reverse(article,start,end);
        System.out.println(s);
    }