目录
题目描述
输入描述
输出描述
用例
题目解析
算法源码
输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。
例如输入字符串”I am a developer. “,区间[0,3],则输出”developer. a am I”。
使用换行隔开三个参数
翻转后的英文文章片段所有单词之间以一个半角空格分隔进行输出。
| 输入 | I am a developer. 1 2 |
| 输出 | I a am developer. |
| 说明 | 无 |
| 输入 | hello world! 0 1 |
| 输出 | world! hello |
| 说明 | 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 |
| 输入 | I am a developer. 0 3 |
| 输出 | developer. a am I |
| 说明 | 如果两个单词见有多余的空格,将反转后单词间的空格减少到只含一个。 |
| 输入 | Hello! 0 3 |
| 输出 | EMPTY |
| 说明 | 指定反转区间只有一个单词,或无有效单词则统一输出EMPTY。 |
本题主要考察数组常规操作,以及简单的双指针使用。
/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});const lines = [];
rl.on("line", (line) => {lines.push(line);if (lines.length === 3) {const [str, start, end] = lines;console.log(reverseGivenRange(str, start, end));lines.length = 0;}
});function reverseGivenRange(str, start, end) {const arr = str.split(/\s+/).filter((c) => c !== "");if (arr.length <= 1) return "EMPTY";while (start < end) {let tmp = arr[start];arr[start] = arr[end];arr[end] = tmp;start++;end--;}return arr.join(" ");
}