zoukankan      html  css  js  c++  java
  • leetcode 657. 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


    解法1:
    class Solution(object):
        def judgeCircle(self, moves):
            """
            :type moves: str
            :rtype: bool
            out("")=True
            out("L" or "D" or "U" or "R") =False
            out("LR")=True
            out("RL")=True
            out("RLDU")=True
            out("LLR")=False
            """
            x = y = 0
            for m in moves:
                if m == "L":
                    x -= 1
                elif m == "R":
                    x += 1
                elif m == "U":
                    y += 1
                else:
                    y -= 1
            return x==0 and y==0

    用查找表更好:

    class Solution(object):
        def judgeCircle(self, moves):
            """
            :type moves: str
            :rtype: bool
            """
            x,y = 0,0
            offsets = {"U":[0,1], "D":[0,-1], "R":[1,0], "L":[-1,0]}
            for move in moves:
                x,y = x+offsets[move][0], y+offsets[move][1]
            return (x == 0) and (y == 0)

    解法2:

    def judgeCircle(self, moves):
        return moves.count('L') == moves.count('R') and moves.count('U') == moves.count('D')

    直接统计LR数目是否相等,同时UD数目是否相等。

    类似代码:

    def judgeCircle(self, moves):
        c = collections.Counter(moves)
        return c['L'] == c['R'] and c['U'] == c['D']

    因为:

    >>> import collections
    >>> collections.Counter("abca")
    Counter({'a': 2, 'b': 1, 'c': 1})

  • 相关阅读:
    ruby中nil?, empty? and blank?
    dialog插件demo
    Oauth2.0 QQ&微信&微博实现第三方登陆
    SSM框架应用
    点击<a>标签后禁止页面跳至顶部
    使用Node.js+Hexo+Github搭建个人博客(续)
    软件项目托管平台
    【转载】 Eclipse注释模板设置详解
    Markdown 简介及基础语法
    SpringMVC简介
  • 原文地址:https://www.cnblogs.com/bonelee/p/8480782.html
Copyright © 2011-2022 走看看