题目如下:

On an infinite plane, a robot initially stands at (0, 0) and faces north.  The robot can receive one of three instructions:

  • "G": go straight 1 unit;
  • "L": turn 90 degrees to the left;
  • "R": turn 90 degress to the right.

The robot performs the instructions given in order, and repeats them forever.

Return true if and only if there exists a circle in the plane such that the robot never leaves the circle.

Example 1:

Input: "GGLLGG"
Output: true
Explanation:
The robot moves from (0,0) to (0,2), turns 180 degrees, and then returns to (0,0).
When repeating these instructions, the robot remains in the circle of radius 2 centered at the origin.

Example 2:

Input: "GG"
Output: false
Explanation:
The robot moves north indefinetely.

Example 3:

Input: "GL"
Output: true
Explanation:
The robot moves from (0, 0) -> (0, 1) -> (-1, 1) -> (-1, 0) -> (0, 0) -> ...

Note:

  1. 1 <= instructions.length <= 100
  2. instructions[i] is in {'G', 'L', 'R'}

解题思路:看到这个题目,我的感觉就是如果能回到起点,应该是执行instructions一次,两次或者四次。嘿嘿,当然我也不知道怎么证明,反正能AC。

代码如下:

class Solution(object):
def process(self,start,instructions):
for i in instructions:
if i == 'G':
if start[2] == 'N':start[1] += 1
elif start[2] == 'S':start[1] -= 1
elif start[2] == 'E':start[0] += 1
elif start[2] == 'W':start[0] -= 1
elif i == 'L':
if start[2] == 'N':start[2] = 'W'
elif start[2] == 'S':start[2] = 'E'
elif start[2] == 'E':start[2] = 'N'
elif start[2] == 'W':start[2] = 'S'
elif i == 'R':
if start[2] == 'N':start[2] = 'E'
elif start[2] == 'S':start[2] = 'W'
elif start[2] == 'E':start[2] = 'S'
elif start[2] == 'W':start[2] = 'N'
return start def isRobotBounded(self, instructions):
"""
:type instructions: str
:rtype: bool
"""
start = [0,0,'N']
end = self.process(start,instructions)
if end[0] == end[1] == 0:
return True
end = self.process(start, instructions)
if end[0] == end[1] == 0:
return True
end = self.process(start, instructions)
end = self.process(start, instructions)
if end[0] == end[1] == 0:
return True
return False

最新文章

  1. 深入学习jQuery选择器系列第一篇——基础选择器和层级选择器
  2. CSS魔法堂:重拾Border之——图片作边框
  3. Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS
  4. oracle中scn(系统改变号)
  5. [BTS] SQL Adapter. New transaction cannot enlist in the specified transaction coordinator
  6. 针对wordpress的二次开发
  7. 推荐 iOS 网站:
  8. dedecms 的这个dede:arclist里怎么调用全局变量?
  9. 每天一个linux命令(25)--Linux文件属性详解
  10. BOM(1)
  11. parsing XML document from class path resource [config/applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [config/applicationContext.xml] 解决方案
  12. kerberos环境storm配置:Running Apache Storm Securely
  13. 学习Axure RP原型设计
  14. [转]C#串口通信 SerialPort类
  15. 改变FileUpload文件上传控件的显示方式,确认后上传
  16. LINQ之let关键字
  17. 怎样利用Heartbeat与Floating IP在Ubuntu 14.04上创建高可用性设置
  18. ios开发之--调整UISearchBar的输入框的背景颜色
  19. python打包到pypi小结
  20. D. Timetable

热门文章

  1. 构建嵌入式Linux交叉编译工具链
  2. mysql慢查询解析-linux命令
  3. Delphi XE2 之 FireMonkey 入门(23) - 数据绑定: TBindingsList: TBindExpression
  4. Delphi XE2 之 FireMonkey 入门(9) - TBitmap
  5. 练习3-python-创造百万条数据库数据
  6. mysql5.7密码登录的那些坑
  7. PAT甲级终结——心得总结
  8. [2019杭电多校第六场][hdu6638]Snowy Smile(维护区间最大子段和)
  9. D-query SPOJ 树状数组+离线
  10. 持续集成工具——Jenkins