按索引范围翻转文章片段
描述
输入一个英文文章片段,
翻转指定区域的单词顺序,
标点符号和普通字母一样处理,
例如输入字符串
I am a developer.
[0,3]
则输出
developer. a am I
输入描述
使用换行隔开3个参数
第一个参数为文章内容 即英文字符串
第二个参数为翻转起始单词下标,下标从0开始
第三个参数为结束单词下标
输出描述
翻转后英文文章片段每个单词之间以一个半角空格分割输出
示例1:
输入
I am a developer.
0
3
输出
developer. a am I
1
示例2:
输入
hello world!
0
3
输出
world! hello
法一
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String str = sc.nextLine();
int left = sc.nextInt();
int right = sc.nextInt();
reverse(str, left, right);
}
}
public static void reverse(String str, int left, int right) {
String[] strs = str.split("\\s+");
//三个条件判断字符串数组是否为空
if (strs.length == 0 || left < 0 || left >= right) {
System.out.println("EMPTY");
return;
}
//判断right是否大于长度
if (strs.length - 1 < right) right = strs.length - 1;
//将一前一后倒置
while (left < right) {
String temp = strs[left];
strs[left] = strs[right];
strs[right] = temp;
right--;
left++;
}
//格式化输出
for (int i = 0 ; i < strs.length ; i++) {
System.out.print(strs[i]);
if (i != (strs.length - 1)) {
System.out.print(" ");
}
}
}
}