Problem Link

Description


You are given a string s. Simulate events at each second i:

  • If s[i] == 'E', a person enters the waiting room and takes one of the chairs in it.
  • If s[i] == 'L', a person leaves the waiting room, freeing up a chair.

Return the minimum number of chairs needed so that a chair is available for every person who enters the waiting room given that it is initially empty.

 

Example 1:

Input: s = "EEEEEEE"

Output: 7

Explanation:

After each second, a person enters the waiting room and no person leaves it. Therefore, a minimum of 7 chairs is needed.

Example 2:

Input: s = "ELELEEL"

Output: 2

Explanation:

Let's consider that there are 2 chairs in the waiting room. The table below shows the state of the waiting room at each second.

SecondEventPeople in the Waiting RoomAvailable Chairs
0Enter11
1Leave02
2Enter11
3Leave02
4Enter11
5Enter20
6Leave11

Example 3:

Input: s = "ELEELEELLL"

Output: 3

Explanation:

Let's consider that there are 3 chairs in the waiting room. The table below shows the state of the waiting room at each second.

SecondEventPeople in the Waiting RoomAvailable Chairs
0Enter12
1Leave03
2Enter12
3Enter21
4Leave12
5Enter21
6Enter30
7Leave21
8Leave12
9Leave03

 

Constraints:

  • 1 <= s.length <= 50
  • s consists only of the letters 'E' and 'L'.
  • s represents a valid sequence of entries and exits.

Solution


Python3

class Solution:
    def minimumChairs(self, s: str) -> int:
        res = 0
        curr = 0
        
        for x in s:
            if x == "E":
                curr += 1
                res = max(res, curr)
            else:
                curr -= 1
        
        return res