第四章 字符串part02
151.翻转字符串里的单词
var reverseWords = function(s) {
// 去除首尾空格
s = s.trim();
// 创建一个字符数组并去除多余空格
let str = [];
for (let i = 0; i < s.length; i++) {
// 跳过重复的空格
if (s[i] === ' ' && s[i - 1] === ' ') continue;
str.push(s[i]);
}
reverseRange(str, 0, str.length);
for (let end = 0, start = 0; end <= str.length; end++) {
if (str[end] === ' ' || end === str.length) {
reverseRange(str, start, end);
start = end + 1;
}
}
return str.join('');
};
// 辅助函数:反转数组的指定范围
function reverseRange(arr, start, end) {
let left = start, right = end - 1;
while (left < right) {
[arr[left], arr[right]] = [arr[right], arr[left]];
left++;
right--;
}
}
卡码网:55.右旋转字符串
// 读取输入
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', (line) => {
input.push(line);
if (input.length === 2) {
let k = parseInt(input[0]);
let s = input[1];
// 计算右旋转的有效位数
k = k % s.length;
// 使用切片实现右旋
let result = s.slice(-k) + s.slice(0, s.length - k);
console.log(result);
rl.close();
}
});