题目要求
向右移动字符串中的指定个数元素,末尾元素依次放在字符串头部,例如
1.输入6,2
2.输出561234
原来是123456,将所有元素平移两位后变成561234,使用栈操作代码如下
// 采用javascript的链表实现
class LinkedList{
constructor(){
this.head = null
this.length = 0
}
// 头插法插入一个元素
append(data){
let newNode = new Node(data)
if(this.length = 0){
this.head = newNode
}else{
newNode.next = this.head
this.head = newNode
}
this.length += 1
}
// 将链表以字符串形式输出
_toString(){
let current = this.head
let result = ''
while(current){
result += current.data + ' '
current = current.next
}
return result
}
// 删除队尾元素
}
class Node{
constructor(data){
this.data = data
this.next = null
}
}
function calculate (num1,num2){
let arr = new LinkedList()
// 依次插入1-6
for( let i = num1; i > 0; i--){
arr.append(i)
}
// 将倒数num2个元素插入链表头部
for( let i = num1; i > num1 - num2; i--){
arr.append(i)
}
// 将字符串分割为数组
let result_0 = arr._toString().split(' ')
// 因为最后还存在一个空格,所以是num2+1
for( let i =0; i < num2 + 1; i++){
result_0.pop()
}
// 返回值将数组再转化为字符串
return result_0.toString()
}
var result = calculate(6,2)
console.log(result)
// 输出561234