输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。例如输入字符串"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"
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。这个问题怎么解决。
private static String reverse(String articles, int start, int end) {
String[] art = articles.trim().split(" ");
if(art.length==1 || art.length==0) {
return "EMPTY";
}
for (int i = 0; i < art.length; i++) {
art[i] = art[i].trim();
System.out.print(art[i]+",");
}
try {
for (int i = start; i <= Math.ceil((end-start)/2)+start; i++) {
String temp = art[i];
art[i] = art[start+end-i];
art[start+end-i] = temp;
}
}catch (Exception e) {
return "EMPTY";
}
String s = "";
for (int i = 0; i < art.length; i++) {
s += art[i]+" ";
}
return s.trim();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String article = scanner.nextLine();
int start = scanner.nextInt();
int end = scanner.nextInt();
String s = reverse(article,start,end);
System.out.println(s);
}