题目描述
输入一个英文文章片段,翻转指定区域的单词顺序,标点符号和普通字母一样处理,例如输入字符串
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) 方法结合使用时,可以对列表的某个子区间内的元素进行反转。