Furthest From Origin in C++


Suppose we have a string s where each character is either "L", "R" or "?". "L" means moved one unit left, "R" means moved one unit right, and "?" means either "L" or "R". If we are at position 0, we have to find the maximum possible distance we could be from 0 by replacing "?" with "L" or "R".

So, if the input is like "LLRRL??", then the output will be 3, replace ? using L to move 5 units left and 2 units right, so maximum displacement is 3.

To solve this, we will follow these steps −

  • op := 0, l := 0, r := 0

  • for each it in s −

    • if it is same as 'L', then −

      • (increase l by 1)

    • otherwise when it is same as 'R', then −

      • (increase r by 1)

    • Otherwise

      • (increase op by 1)

  • return maximum of (l and r) - minimum of (l and r) + op

Let us see the following implementation to get better understanding −

Example

 Live Demo

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int solve(string s) {
      int op = 0;
      int l = 0;
      int r = 0;
      for (auto &it : s) {
         if (it == 'L') {
            l++;
         } else if (it == 'R') {
            r++;
         } else {
            op++;
         }
      }
      return max(l, r) - min(l, r) + op;
   }
};
main() {
   Solution ob;
   cout << (ob.solve("LLRRL??"));
}

Input

"LLRRL??"

Output

3

Updated on: 02-Sep-2020

596 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements