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

  • 相关阅读:
    编程输出2~100之间的质数
    Java基本类型和引用类型
    内存溢出原因及解决方案
    ACE通信机制
    ACE线程管理机制并发控制
    ACE中UDP通信
    ACE线程管理机制并发控制(3)
    ACE线程管理机制线程的创建与管理
    ACE线程管理机制并发控制(1)
    ACE中TCP通信
  • 原文地址:https://www.cnblogs.com/godoforange/p/10874364.html
Copyright © 2011-2022 走看看