题解 | #坐标移动#利用哈希表的巧妙解法,10行代码,不用判断上下左右;JavaScript,JS

坐标移动

http://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29

利用哈希表储存移动的方式,不用判断上下左右,一步搞定

例如"A10":
pos为储存坐标,初始[0,0]
step为每一次走的步数,step='A10'.slice(1)
哈希表储存"A"及其移动的方式:key:A=>value:[-1,0] ——“-1”代表X方向向左走,0代表Y方向不移动

  • 坐标计算
    pos[0]+=step * value[0]
    pos[1]+=step * value[1]

    上述计算式子对于ADWS都成立,因此不用判断上下左右,一步搞定;

    let input=readline().split(';'),pos=[0,0]
    const map=new Map([['A',[-1,0]],['D',[1,0]],['W',[0,1]],['S',[0,-1]]])
    for(let str of input){
      let step=str.slice(1)-0
      if(!isNaN(step) && map.has(str[0]) && step<=99 && step>0){ //如果符合移动条件
          let dir=map.get(str[0])
          pos[0]+=dir[0]*step
          pos[1]+=dir[1]*step
      }
    }
    console.log(pos[0]+','+pos[1])

    代码简洁舒适有木有!!!

全部评论
骚!学习了
点赞
送花
回复
分享
发布于 2022-02-25 14:37

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务