本博文源于js基础,旨在探讨如何实现字符串循环右移的方法,下面给出两种做题方法!
题目再现
题目:编写函数rightchange(char ,n),实现将字符串char循环右移n位,如rightchange(“东西南北中”,2)将返回“北中东西南”。这是因为字符串“东西南北中”循环右移一位变为“中东西南中”,再次循环右移一位就变为“北中东西南”
算法思路
思路1—pop法
可以将字符串转换为数组,将数组的末项删除后在队首插入,如此执行n次,最后将数组转回字符串即可。数组的pop()方法会删除并返回数组的最后一项,可以将这项作为unshift()方法的参数,插入到数组的队首
arr.unshift(arr.pop());
测试效果
附上源码
<script>
function rightchange(charstr,n) {
n = n % charstr.length;
var arr = charstr.split("");
var count = n;
while(count--) {
arr.unshift(arr.pop());
}
return arr.join("");
}
</script>
思路2—分割法
将字符串“abcd”循环右移2位,等价于将字符串的倒数2个字符转移到字符串的起始,因此采用分割将其取出来,然后进行字符串拼接
测试效果
附上源码
<script>
function rightchange_2(str,n) {
n = n% str.length;
var str1 = str.slice(0,-n);
var str2 = str.slice(-n);
return str2+str1;
}
</script>