leetcode:657. 机器人能否返回原点

题目来源

leetcode

题目描述

在这里插入图片描述

题目解析

模拟

import java.util.HashSet;
import java.util.Set;

public class Solution {
    public static boolean judgeCircle(String moves) {
        if (moves.length() == 0){
            return true;
        }

        if (moves.length() %2 != 0){
            return false;
        }

        int x = 0;
        int y = 0;

        char [] arr = moves.toCharArray();
        for (char c: arr){
            switch (c){
                case 'R':
                    x++;
                    break;
                case 'L':
                    x--;
                    break;
                case 'U':
                    y++;
                    break;
                case 'D':
                    y--;
                    break;
            }
        }

        return x == 0 && y == 0;
    }

    public static void main(String[] args) {
        System.out.println(judgeCircle("LL"));
    }
}

在这里插入图片描述

使用map【错了很多次,小心】

class Solution {
    public boolean judgeCircle(String moves) {
       if (moves.length() == 0){
            return true;
        }

        if (moves.length() %2 != 0){
            return false;
        }

        Map<Character, Integer> map = new HashMap<>();
        map.put('R', 0);
        map.put('L', 0);
        map.put('U', 0);
        map.put('D', 0);  // 一定要有,否则异常
        char[] tmp = moves.toCharArray();
        for (char c: tmp) {
            map.merge(c, 1, Integer::sum); // 注意写法

        }

        return map.get('R').equals(map.get('L')) && map.get('U').equals(map.get('D')); // 错误点
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值