列表

详情


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
}

上一题