题目描述
给定一段英文文章片段,由若干单词组成,单词间以空格间隔,单词下标从0开始。
请翻转片段中指定区间的单词顺序并翻转后的内容。
例如个给定的英文文章片段为"I am a developer",翻转区间为[0,3],则输出"developer a am I"。
String reverseWords(String s,int start, int end)
输入描述
使用换行隔开三个参数,第一个参数为英文文章内容即英文字符串,第二个参数为待翻转内容起始单词下标,
第三个参数为待翻转内容最后一个单词下标。
输出描述
翻转后的英文文章片段所有单词之间以一个半角空格分隔进行输出
备注:
英文文章内容首尾无空格
示例1
输入
I am a developer
1
2
输出
I a m developer
题解
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入英文字符串:");
String input = sc.nextLine();
System.out.println("请输入翻转起始下标:");
List<Integer> indexes = new ArrayList<>();
for (int i = 0; i < 2; i++) {
indexes.add(sc.nextInt());
}
System.out.println(flipContent(input, indexes));
}
/**
* 按单词下标区间翻转文章内容
*
* @param content
* @return
*/
public static String flipContent(String content, List<Integer> indexes){
String[] infos = content.split(" ");
Integer start = indexes.get(0);
Integer end = indexes.get(1);
Stack<String> stack = new Stack<>();
//将翻转的内容放入栈中
for (int i = start; i <= end; i++) {
stack.push(infos[i]);
}
List<String> flipContent = new ArrayList<>();
for (int i = 0; i < infos.length; i++) {
if (start <= i && i <= end) {
String flipInfo = stack.pop();
flipContent.add(flipInfo);
}else {
flipContent.add(infos[i]);
}
}
return flipContent.toString().replaceAll(",","").replaceAll("\\[|\\]","");
}