给定运动后机器人的位置

给定一个只能向上(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
喜欢就支持一下吧
点赞12 分享