Related Articles
Find the direction from given string
• Last Updated : 01 Apr, 2021

Given a string containing only L’s and R’s which represents left rotation and right rotation respectively. The task is to find the final direction of pivot(i.e N/E/S/W). Let a pivot is pointed towards the north(N) in a compass.

Examples:

```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```

Approach:

1. Use a counter that incremented on seeing R and decremented on seeing L.
2. Finally, use modulo on the counter to get the direction.
3. If the count is negative then directions will be different. Check the code for negative as well.

Below is the implementation of the above approach:

## C++

 `// CPP implementation of above approach``#include ``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 == ``'\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` `=``=` `10``):``            ``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 == ``'\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

 ` 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

 ``
Output

```W
S```

Time Complexity: O(N) where N is the length of the string
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live and Geeks Classes Live USA

My Personal Notes arrow_drop_up