题解 | #坐标移动#利用哈希表的巧妙解法,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])
代码简洁舒适有木有!!!