[LeetCode] Judge Route Circle 判断路线绕圈

简介:

Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this robot makes a circle, which means it moves back to the original place.

The move sequence is represented by a string. And each move is represent by a character. The valid robot moves are R (Right), L(Left), U (Up) and D (down). The output should be true or false representing whether the robot makes a circle.

Example 1:

Input: "UD"
Output: true

Example 2:

Input: "LL"
Output: false 

这道题让我们判断一个路径是否绕圈,就是说有多少个U,就得对应多少个D。同理,L和R的个数也得相等。这不就是之前那道Valid Parentheses的变种么,这次博主终于举一反三了!这比括号那题还要简单,因为括号至少还有三种,这里就水平和竖直两种。比较简单的方法就是使用两个计数器,如果是U,则cnt1自增1;如果是D,cnt1自减1。同理,如果是L,则cnt1自增1;如果是R,cnt1自减1。最后只要看cnt1和cnt2是否同时为0即可,参见代码如下:

解法一:

public:
    bool judgeCircle(string moves) {
        int cnt1 = 0, cnt2 = 0;
        for (char move : moves) {
            if (move == 'U') ++cnt1;
            else if (move == 'D') --cnt1;
            else if (move == 'L') ++cnt2;
            else if (move == 'R') --cnt2;
        }
        return cnt1 == 0 && cnt2 == 0;
    }
}; 

下面这种解法使用了哈希表来建立字符和其出现的次数之间的映射,最后直接比较对应的字符出现的次数是否相等即可,参见代码如下:

解法二:

public:
    bool judgeCircle(string moves) {
        unordered_map<char, int> m;
        for (char c : moves) ++m[c];
        return m['L'] == m['R'] && m['U'] == m['D'];
    }
};

参考资料: 

https://discuss.leetcode.com/topic/99256/c-counter-4-lines-solution 

本文转自博客园Grandyang的博客,原文链接:[LeetCode] Judge Route Circle 判断路线绕圈

,如需转载请自行联系原博主。

相关文章
|
JavaScript
代码随线录刷题|LeetCode 392.判断子序列 115.不同的子序列
代码随线录刷题|LeetCode 392.判断子序列 115.不同的子序列
代码随线录刷题|LeetCode 392.判断子序列 115.不同的子序列
|
Java
java学习第四天笔记-流程控制语句-分支结构82-判断和循环次数-回文数leetcode求商和余数
java学习第四天笔记-流程控制语句-分支结构82-判断和循环次数-回文数leetcode求商和余数
81 0
java学习第四天笔记-流程控制语句-分支结构82-判断和循环次数-回文数leetcode求商和余数
|
Java
java学习第四天笔记-流程控制语句-分支结构81-判断和循环次数-回文数leetcode
java学习第四天笔记-流程控制语句-分支结构81-判断和循环次数-回文数leetcode
88 0
java学习第四天笔记-流程控制语句-分支结构81-判断和循环次数-回文数leetcode
|
存储
|
算法 索引 Python
Leetcode刷题指南之Python求两数之和【多种思路详解】,判断是否为回文数【将整数转为字符串】【不转为字符串】
两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。
448 1
Leetcode刷题指南之Python求两数之和【多种思路详解】,判断是否为回文数【将整数转为字符串】【不转为字符串】
LeetCode每日一题——1704. 判断字符串的两半是否相似
给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半,前一半为 a ,后一半为 b 。
91 0
Leetcode-Easy 657. Judge Route Circle
Leetcode-Easy 657. Judge Route Circle
86 0
Leetcode-Easy 657. Judge Route Circle
☆打卡算法☆LeetCode 9、判断回文数 算法解析
“判断给定的整数是否是一个回文数。”