• 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})

  • 相关阅读:
    DAS,NAS,SAN在数据库存储上的应用
    ASP.NET4.5Web API及非同步程序开发系列3
    WCFRESTFul服务搭建及实现增删改查
    Workflow:自定义工作流 之 模型选择
    结构变量作为方法的参数调用
    C语言复习笔记-17种小算法-解决实际问题
    构建RESTful风格的WCF服务
    进程状态转换、CPU调度算法
    Excel 开发概述
    jQuery 1.10.2 and 2.0.3 Released
  • 原文地址:https://www.cnblogs.com/bonelee/p/8480782.html
Copyright © 2020-2023  润新知