GP34. 推箱子
描述
在二维平面上,有一个人在推箱子,假设从原点 (0, 0) 开始。给出它的移动顺序,判断这个箱子在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。推箱子的有效动作有 R(右),L(左),U(上)和 D(下)。如果推箱子完成所有动作后返回原点,则返回 true。否则,返回 false。示例1
输入:
"UD"
输出:
true
Go 解法, 执行用时: 2ms, 内存消耗: 1220KB, 提交时间: 2022-07-22
package main //import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param forwards string字符串 推箱子方向 * @return bool布尔型 */ func pushBox( forwards string ) bool { // write code here var x int var y int for _, c := range forwards { if c == 'U' { y += 1 } else if c == 'R' { x += 1 } else if c == 'D' { y -= 1 } else if c == 'L' { x -= 1 } } return x == 0 && y == 0 }
Go 解法, 执行用时: 3ms, 内存消耗: 780KB, 提交时间: 2022-06-17
package main //import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param forwards string字符串 推箱子方向 * @return bool布尔型 */ func pushBox( forwards string ) bool { // write code here v1 := 0 v2 := 0 for _,v := range forwards { if v == 'R'{ v1++ } if v == 'L'{ v1-- } if v == 'U'{ v2++ } if v == 'D'{ v2-- } } return v1 == 0 && v2 == 0 }
Go 解法, 执行用时: 3ms, 内存消耗: 836KB, 提交时间: 2022-07-11
package main //import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param forwards string字符串 推箱子方向 * @return bool布尔型 */ func pushBox( forwards string ) bool { // write code here res := []int{0,0} // forwardsList := []string(forwards) for i:=0;i<len(forwards);i++{ if string(forwards[i]) == "U"{ res[1] ++ }else if string(forwards[i]) == "D" { res[1] -- }else if string(forwards[i]) == "R" { res[0] -- }else { res[0] ++ } } if res[0] == 0 && res[1] == 0 { return true } return false }
Go 解法, 执行用时: 3ms, 内存消耗: 852KB, 提交时间: 2022-06-14
package main //import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param forwards string字符串 推箱子方向 * @return bool布尔型 */ func pushBox( forwards string ) bool { // write code here x, y := 0, 0 for i := range forwards { switch forwards[i] { case 'R': x++ case 'L': x-- case 'U': y++ case 'D': y-- } } if x != 0 || y != 0 { return false } else { return true } }
Go 解法, 执行用时: 3ms, 内存消耗: 916KB, 提交时间: 2022-07-14
package main //import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param forwards string字符串 推箱子方向 * @return bool布尔型 */ func pushBox( forwards string ) bool { // write code here var x int var y int for i := range forwards { switch forwards[i] { case 'R': x++ case 'L': x-- case 'U': y++ case 'D': y-- } } return x == 0 && y == 0 }