给定一个只能向上(U)、下(D)、左(L)、右(R)四个方向移动的机器人。给定一个由移动指令组成的字符串。执行指令后输出机器人的坐标。机器人的初始位置在原点(0,0)。
null
例如:
输入: move=“UDDLRL” 输出: (-1, -1) 说明: 移动U:(0,0)-(0,1) 移动D:(0,1)-(0,0) 移动D:(0,0)-(0,-1) 移动L:(0,-1)–(-1,-1) 移动R:(-1,-1)-(0,-1) 移动L:(0,-1)–(-1,-1) 因此最终位置完成后 运动是:(-1,-1)
输入: move=“uddllruuduruduulldrrr” 输出: (2, 3)
资料来源: 高盛面试经验|第36集 .
方法: 将向上运动(U)、向下运动(D)、向左运动(L)和向右运动(R)的数量分别计算为倒计时、倒计时、倒左和倒右。最终的x坐标将是 (countRight–countLeft)和y坐标将为(countUp–countDown)。
以下是上述理念的实施情况:
C++
// C++ implementation to find final position of // robot after the complete movement #include <bits/stdc++.h> using namespace std; // Function to find final position of // robot after the complete movement void finalPosition(string move) { int l = move.size(); int countUp = 0, countDown = 0; int countLeft = 0, countRight = 0; // Traverse the instruction string 'move' for ( int i = 0; i < l; i++) { // For each movement increment its // respective counter if (move[i] == 'U' ) countUp++; else if (move[i] == 'D' ) countDown++; else if (move[i] == 'L' ) countLeft++; else if (move[i] == 'R' ) countRight++; } // Required final position of robot cout << "Final Position: (" << (countRight - countLeft) << ", " << (countUp - countDown) << ")" << endl; } // Driver code int main() { string move = "UDDLLRUUUDUURUDDUULLDRRRR" ; finalPosition(move); return 0; } |
JAVA
// Java implementation to find final position // of robot after the complete movement import java.io.*; class GFG { // function to find final position of // robot after the complete movement static void finalPosition(String move) { int l = move.length(); int countUp = 0 , countDown = 0 ; int countLeft = 0 , countRight = 0 ; // traverse the instruction string // 'move' for ( int i = 0 ; i < l; i++) { // for each movement increment // its respective counter if (move.charAt(i) == 'U' ) countUp++; else if (move.charAt(i) == 'D' ) countDown++; else if (move.charAt(i) == 'L' ) countLeft++; else if (move.charAt(i) == 'R' ) countRight++; } // required final position of robot System.out.println( "Final Position: (" + (countRight - countLeft) + ", " + (countUp - countDown) + ")" ); } // Driver code public static void main(String[] args) { String move = "UDDLLRUUUDUURUDDUULLDRRRR" ; finalPosition(move); } } // This code is contributed by vt_m |
Python3
# Python3 implementation to find final position # of robot after the complete movement # function to find final position of # robot after the complete movement def finalPosition(move): l = len (move) countUp, countDown = 0 , 0 countLeft, countRight = 0 , 0 # traverse the instruction string # 'move' for i in range (l): # for each movement increment # its respective counter if (move[i] = = 'U' ): countUp + = 1 elif (move[i] = = 'D' ): countDown + = 1 elif (move[i] = = 'L' ): countLeft + = 1 elif (move[i] = = 'R' ): countRight + = 1 # required final position of robot print ( "Final Position: (" , (countRight - countLeft), ", " , (countUp - countDown), ")" ) # Driver code if __name__ = = '__main__' : move = "UDDLLRUUUDUURUDDUULLDRRRR" finalPosition(move) # This code is contributed by 29AjayKumar |
C#
// C# implementation to find final position // of robot after the complete movement using System; class GFG { // function to find final position of // robot after the complete movement static void finalPosition(String move) { int l = move.Length; int countUp = 0, countDown = 0; int countLeft = 0, countRight = 0; // traverse the instruction string // 'move' for ( int i = 0; i < l; i++) { // for each movement increment // its respective counter if (move[i] == 'U' ) countUp++; else if (move[i] == 'D' ) countDown++; else if (move[i] == 'L' ) countLeft++; else if (move[i] == 'R' ) countRight++; } // required final position of robot Console.WriteLine( "Final Position: (" + (countRight - countLeft) + ", " + (countUp - countDown) + ")" ); } // Driver code public static void Main() { String move = "UDDLLRUUUDUURUDDUULLDRRRR" ; finalPosition(move); } } // This code is contributed by Sam007 |
PHP
<?php // PHP implementation to find // final position of robot after // the complete movement // function to find final position of // robot after the complete movement function finalPosition( $move ) { $l = strlen ( $move ); $countUp = 0; $countDown = 0; $countLeft = 0; $countRight = 0; // traverse the instruction // string 'move' for ( $i = 0; $i < $l ; $i ++) { // for each movement increment its // respective counter if ( $move [ $i ] == 'U' ) $countUp ++; else if ( $move [ $i ] == 'D' ) $countDown ++; else if ( $move [ $i ] == 'L' ) $countLeft ++; else if ( $move [ $i ] == 'R' ) $countRight ++; } // required final position of robot echo "Final Position: (" . ( $countRight - $countLeft ) . ", " , ( $countUp - $countDown ) . ")" . "" ; } // Driver Code $move = "UDDLLRUUUDUURUDDUULLDRRRR" ; finalPosition( $move ); // This code is contributed by Sam007 ?> |
Javascript
<script> // Javascript implementation to find final position // of robot after the complete movement // function to find final position of // robot after the complete movement function finalPosition(move) { let l = move.length; let countUp = 0, countDown = 0; let countLeft = 0, countRight = 0; // traverse the instruction string // 'move' for (let i = 0; i < l; i++) { // for each movement increment // its respective counter if (move[i] == 'U' ) countUp++; else if (move[i] == 'D' ) countDown++; else if (move[i] == 'L' ) countLeft++; else if (move[i] == 'R' ) countRight++; } // required final position of robot document.write( "Final Position: (" + (countRight - countLeft) + ", " + (countUp - countDown) + ")" ); } let move = "UDDLLRUUUDUURUDDUULLDRRRR" ; finalPosition(move); </script> |
输出
Final Position: (2, 3)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END