在 JavaScript 中执行字符串移位
假设我们有一个包含小写英文字母的字符串 str,以及一个数组 arr,其中 arr[i] = [direction, amount] -
direction 可以是 0(左移)或 1(右移)。
amount 是字符串 s 要移位的数量。
左移 1 表示删除 s 的第一个字符并将其追加到末尾。
类似地,右移 1 表示删除 s 的最后一个字符并将其添加到开头。
我们需要编写一个 JavaScript 函数,该函数将字符串作为第一个参数,将包含移位数据的数组作为第二个参数。
该函数应遍历数组并在字符串中执行必要的移位,最后返回新字符串。
例如 -
如果输入字符串和数组为 -
const str = 'abc'; const arr = [[0, 1], [1, 2]];
则输出应为 -
const output = 'cab';
因为,
[0,1] 表示左移 1。 “abc” -> “bca”
[1,2] 表示右移 2。 “bca” -> “cab”
示例
代码如下 -
const str = 'abc'; const arr = [[0, 1], [1, 2]]; const performShifts = (str = '', arr = []) => { if(str.length < 2){ return str; }; let right = 0 let left = 0; for(let sub of arr){ if(sub[0] == 0){ left += sub[1]; }else{ right += sub[1]; }; }; if(right === left){ return str; } if(right > left){ right = right - left; right = right % str.length; return str.substring(str.length - right) + str.substring(0, str.length - right); }else{ left = left - right; left = left % str.length; return str.substring(left) + str.substring(0,left); }; }; console.log(performShifts(str, arr));
输出
控制台中的输出将为 -
cab
广告