Dada una string que contiene solo L y R, que representa la rotación a la izquierda y la rotación a la derecha, respectivamente. La tarea es encontrar la dirección final del pivote (es decir, N/E/S/W). Deje que un pivote apunte hacia el norte (N) en una brújula.
Ejemplos:
Input: str = "LLRLRRL" Output: W In this input string we rotate pivot to left when a L char is encountered and right when R is encountered. Input: str = "LL" Output: S
Acercarse:
- Use un contador que incremente al ver R y disminuya al ver L.
- Finalmente, use módulo en el mostrador para obtener la dirección.
- Si el conteo es negativo, las direcciones serán diferentes. Verifique el código para ver si es negativo también.
A continuación se muestra la implementación del enfoque anterior:
C++
// CPP implementation of above approach #include <bits/stdc++.h> using namespace std; // Function to find the final direction string findDirection(string s) { int count = 0; string d = ""; for (int i = 0; i < s.length(); i++) { if (s[0] == '\n') return NULL; if (s[i] == 'L') count--; else { if (s[i] == 'R') count++; } } // if count is positive that implies // resultant is clockwise direction if (count > 0) { if (count % 4 == 0) d = "N"; else if (count % 4 == 1) d = "E"; else if (count % 4 == 2) d = "S"; else if (count % 4 == 3) d = "W"; } // if count is negative that implies // resultant is anti-clockwise direction if (count < 0) { if (count % 4 == 0) d = "N"; else if (count % 4 == -1) d = "W"; else if (count % 4 == -2) d = "S"; else if (count % 4 == -3) d = "E"; } return d; } // Driver code int main() { string s = "LLRLRRL"; cout << (findDirection(s)) << endl; s = "LL"; cout << (findDirection(s)) << endl; } // This code is contributed by // SURENDRA_GANGWAR
Java
// Java implementation of above approach import java.util.*; class GFG { // Function to find the final direction static String findDirection(String s) { int count = 0; String d = ""; for (int i = 0; i < s.length(); i++) { if (s.charAt(0) == '\n') return null; if (s.charAt(i) == 'L') count--; else { if (s.charAt(i) == 'R') count++; } } // if count is positive that implies // resultant is clockwise direction if (count > 0) { if (count % 4 == 0) d = "N"; else if (count % 4 == 1) d = "E"; else if (count % 4 == 2) d = "S"; else if (count % 4 == 3) d = "W"; } // if count is negative that implies // resultant is anti-clockwise direction if (count < 0) { if (count % 4 == 0) d = "N"; else if (count % 4 == -1) d = "W"; else if (count % 4 == -2) d = "S"; else if (count % 4 == -3) d = "E"; } return d; } // Driver code public static void main(String[] args) { String s = "LLRLRRL"; System.out.println(findDirection(s)); s = "LL"; System.out.println(findDirection(s)); } }
Python3
# Python3 implementation of # the above approach # Function to find the # final direction def findDirection(s): count = 0 d = "" for i in range(len(s)): if (s[i] == 'L'): count -= 1 else: if (s[i] == 'R'): count += 1 # if count is positive that # implies resultant is clockwise # direction if (count > 0): if (count % 4 == 0): d = "N" elif (count % 4 == 1): d = "E" elif (count % 4 == 2): d = "S" elif (count % 4 == 3): d = "W" # if count is negative that # implies resultant is anti- # clockwise direction if (count < 0): count *= -1 if (count % 4 == 0): d = "N" elif (count % 4 == 1): d = "W" elif (count % 4 == 2): d = "S" elif (count % 4 == 3): d = "E" return d # Driver code if __name__ == '__main__': s = "LLRLRRL" print(findDirection(s)) s = "LL" print(findDirection(s)) # This code is contributed by 29AjayKumar
C#
// C# implementation of above approach using System; class GFG { // Function to find the final direction static String findDirection(String s) { int count = 0; String d = ""; for (int i = 0; i < s.Length; i++) { if (s[0] == '\n') return null; if (s[i] == 'L') count--; else { if (s[i] == 'R') count++; } } // if count is positive that implies // resultant is clockwise direction if (count > 0) { if (count % 4 == 0) d = "N"; else if (count % 4 == 1) d = "E"; else if (count % 4 == 2) d = "S"; else if (count % 4 == 3) d = "W"; } // if count is negative that implies // resultant is anti-clockwise direction if (count < 0) { if (count % 4 == 0) d = "N"; else if (count % 4 == -1) d = "W"; else if (count % 4 == -2) d = "S"; else if (count % 4 == -3) d = "E"; } return d; } // Driver code public static void Main() { String s = "LLRLRRL"; Console.WriteLine(findDirection(s)); s = "LL"; Console.WriteLine(findDirection(s)); } } // This code is contributed by Shashank
PHP
<?php // PHP implementation of above approach // Function to find the final direction function findDirection($s) { $count = 0; $d = ""; for ($i = 0; $i < strlen($s); $i++) { if ($s[0] == '\n') return null; if ($s[$i] == 'L') $count -= 1; else { if ($s[$i] == 'R') $count += 1; } } // if count is positive that implies // resultant is clockwise direction if ($count > 0) { if ($count % 4 == 0) $d = "N"; else if ($count % 4 == 1) $d = "E"; else if ($count % 4 == 2) $d = "S"; else if ($count % 4 == 3) $d = "W"; } // if count is negative that // implies resultant is // anti-clockwise direction if ($count < 0) { if ($count % 4 == 0) $d = "N"; else if ($count % 4 == -1) $d = "W"; else if ($count % 4 == -2) $d = "S"; else if ($count % 4 == -3) $d = "E"; } return $d; } // Driver code $s = "LLRLRRL"; echo findDirection($s)."\n"; $s = "LL"; echo findDirection($s)."\n"; // This code is contributed // by ChitraNayal ?>
Javascript
<script> // Javascript implementation of above approach // Function to find the final direction function findDirection(s) { let count = 0; let d = ""; for (let i = 0; i < s.length; i++) { if (s[0] == '\n') return null; if (s[i] == 'L') count--; else { if (s[i] == 'R') count++; } } // if count is positive that implies // resultant is clockwise direction if (count > 0) { if (count % 4 == 0) d = "N"; else if (count % 4 == 1) d = "E"; else if (count % 4 == 2) d = "S"; else if (count % 4 == 3) d = "W"; } // if count is negative that implies // resultant is anti-clockwise direction if (count < 0) { if (count % 4 == 0) d = "N"; else if (count % 4 == -1) d = "W"; else if (count % 4 == -2) d = "S"; else if (count % 4 == -3) d = "E"; } return d; } let s = "LLRLRRL"; document.write(findDirection(s) + "</br>"); s = "LL"; document.write(findDirection(s)); // This code is contributed by divyeshrabadiya07. </script>
Producción
W S
Complejidad de tiempo: O(N) donde N es la longitud de la string
Espacio auxiliar: O(1)