按区间反转文章片段

题目描述:

输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。
例如输入字符串 “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。

题目解析

解题思路

1、注意输入字符串中前后的空格
2、注意end的大小可能超过字符串长度
3、注意反转的区间

java实现

package com.HW;
package com.HW;


/**
 * @ClassName : TStrIntervalReverse
 * @Author : kele
 * @Date: 2023/10/24 22:31
 * @Description :按区间反转文章片段
 */
public class TStrIntervalReverse {

    public static void main(String[] args) {

        handle("I am a developer.",0,3);
        handle("I am a developer.",1,2);
        handle("Hello world!",0,1);
    }

    public static void handle(String str, int begin, int end) {

        String[] split = str.trim().split("\\s+");

        if (end > split.length - 1 || end < begin || begin < 0 || begin > split.length - 1) {
            System.out.println("EMPTY");
            return;
        }

        StringBuilder builder = new StringBuilder();

        for (int i = 0; i < begin; i++) {
            builder.append(split[i]).append(" ");
        }

        for (int i = end; i >= begin; i--) {
            builder.append(split[i]).append(" ");
        }

        if(end < split.length-1){
            for (int i = end + 1; i < split.length; i++) {
                builder.append(split[i]).append(" ");
            }
        }

        System.out.println(builder.substring(0,builder.length()-1));

    }
}

你可能感兴趣的:(华为od,算法,java,华为od,数据结构,1024程序员节)