题目0007-单词反转

题目描述

输入一个英文文章片段,翻转指定区域的单词顺序,标点符号和普通字母一样处理,例如输入字符串

I am a developer.
[0,3]

则输出

developer. a am I

输入描述

使用换行隔开3个参数
第一个参数为文章内容 即英文字符串
第二个参数为翻转起始单词下标,下标从0开始
第三个参数为结束单词下标

输出描述

翻转后英文文章片段每个单词之间以一个半角空格分割输出

代码实现

import java.util.*;

public class Main {
  /**
    输入:
    I am a developer.
    [0,3]
    输出:
    developer. a am I
  */
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    //输入字符串
    String line = scanner.nextLine();
    //起始下标
    int start = scanner.nextInt();
    //结束下标
    int end = scanner.nextInt();
    
    //将字符串转化为数组
    String[] words = line.trim().split(" ");
    //将数组转化为list列表
    List<String> list = new ArrayList<>(Arrays.asList(words));
    //将list中从索引start到索引end(包含end)的部分元素顺序反转。如果end + 1大于列表的长度,它会使用words.length作为结束索引,以避免 IndexOutOfBoundsException。
    Collections.reverse(list.subList(start, Math.min(end + 1, words.length)));
    //输出反转后的字符串
    System.out.println(String.join(" ", list));
  }
}

Collections.reverse()方法

在 Java 中,Collections.reverse(List<?> list) 方法用于将指定列表中的元素顺序反转。当与 List.subList(int fromIndex, int toIndex) 方法结合使用时,可以对列表的某个子区间内的元素进行反转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值