zoukankan      html  css  js  c++  java
  • 1041. 困于环中的机器人

    题目描述
    评论 (19)
    题解New
    提交记录

    在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。机器人可以接受下列三条指令之一:

    • "G":直走 1 个单位
    • "L":左转 90 度
    • "R":右转 90 度

    机器人按顺序执行指令 instructions,并一直重复它们。

    只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false

    示例 1:

    输入:"GGLLGG"
    输出:true
    解释:
    机器人从 (0,0) 移动到 (0,2),转 180 度,然后回到 (0,0)。
    重复这些指令,机器人将保持在以原点为中心,2 为半径的环中进行移动。
    

    示例 2:

    输入:"GG"
    输出:false
    解释:
    机器人无限向北移动。
    

    示例 3:

    输入:"GL"
    输出:true
    解释:
    机器人按 (0, 0) -> (0, 1) -> (-1, 1) -> (-1, 0) -> (0, 0) -> ... 进行移动。

    提示:

    1. 1 <= instructions.length <= 100
    2. instructions[i] 在 {'G', 'L', 'R'} 中
    3. 代码如下:
    4. public boolean isRobotBounded(String instructions) {
              int x = 0,y = 0;
              int direct = 0;//0 北 1 东 2 南 3 西
              for(int i=0;i<4;i++) {
                  for(int j=0;j<instructions.length();j++) {
                      switch (instructions.charAt(j)) {
                      case 'G':
                          switch(direct) {
                              case 0:
                                  y++;
                                  break;
                              case 1:
                                  x++;
                                  break;
                              case 2:
                                  y--;
                                  break;
                              case 3:
                                  x--;
                                  break;
                              default:
                                  break;
                          }
                          break;
                      case 'R':
                          switch(direct) {
                              case 3:
                                  direct = 0;
                                  break;
                              default:
                                  direct++;
                                  break;
                          }
                          break;
                          
                      case 'L':
                          switch(direct) {
                          case 0:
                              direct = 3;
                              break;
                          default:
                              direct--;
                              break;
                      }
                          break;
                      default:
                          break;
                      }
                  }
              }
              return (x==0&&y==0);
          }

  • 相关阅读:
    大数据概述
    [转载]Python 资源大全中文版
    dataTaDataTable 详细教程
    DataTable 中文国际化
    ipython notebook教程
    Django查询操作
    Django模型的元数据Meta
    如何使用命令提示符进入mysql
    教你如何查看占用端口
    php简易计算器实例
  • 原文地址:https://www.cnblogs.com/godoforange/p/10874364.html
Copyright © 2011-2022 走看看