按区间反转文章片段

题目描述:

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

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值