记一次笔试题

题目要求

向右移动字符串中的指定个数元素,末尾元素依次放在字符串头部,例如
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

猜你喜欢

转载自www.cnblogs.com/lfnumber7/p/12577873.html