Hotel Rooms

Moderate
0/80
Average time to solve is 20m
profile
Contributed by
11 upvotes
Asked in companies
AmazonExpedia GroupInfosys Sp

Problem statement

You are the manager of a hotel having 10 floors numbered 0-9. Each floor has 26 rooms [A-Z]. You will be given a sequence of strings of the room where ‘+’ suggests the room is booked and ‘-’ suggests the room is freed. You have to find which room is booked the maximum number of times.

Note:
You may assume that the sequence is always correct, i.e., every booked room was previously free, and every freed room was previously booked.

In case, 2 rooms have been booked the same number of times, you have to return Lexographically smaller room.

A string 'a' is lexicographically smaller than a string 'b' (of the same length) if in the first position where 'a' and 'b' differ, string 'a' has a letter that appears earlier in the alphabet than the corresponding letter in string 'b'. For example, "abcd" is lexicographically smaller than "acbd" because the first position they differ in is at the second letter, and 'b' comes before 'c'.
For Example :
n = 6, Arr[] = {"+1A", "+3E", "-1A", "+4F", "+1A", "-3E"}

Now in this example room “1A” was booked 2 times which is the maximum number of times any room was booked. Hence the answer is “1A”.
Detailed explanation ( Input/output format, Notes, Images )
Input Format :
The first line of input format contains ‘T’ denoting the number of test cases. Then each testcase follows

The first line of each test case contains an integer ‘n’ Denoting the number of times a room is booked or freed.

The second line of the test case contains an array of ‘n’ strings each string denoting which room was booked or freed.
Output Format :
For each test case, Print a string ‘ans’ denoting the room which was booked maximum number of times.    

Output for every query will be printed in a separate line.
Note :
You are not required to print anything explicitly. It has already been taken care of. Just implement the functions.
Constraints :
1 <= T <= 10
1 <= N <= 10^4

Time Limit: 1 sec
Sample Input 1 :
2
5
+2A +3A -2A +4Z +2A
7
+7B -7B +7B -7B +7B -7B +7B
Sample Output 1 :
2A
7B
Explanation for Sample Output 1 :
In the first test case, room 2A was booked 2 times and 3A, 4Z were booked one time each. Hence the answer is 2A.

In the second test case, room 7B is booked 4 times. Hence the answer is 7B.
Sample Input 2 :
2
3
+6G +8F +3Z
8
+5Q -5Q +9D -9D +5Q +7I +3O -5Q
Sample Output 2 :
3Z
5Q
Hint

Check how many times a room was booked.

Approaches (2)
Brute Force

The approach is simple, select a room from the sequence and count the total number of times that room was booked and check this for every room until we reach the end of list.

 

The steps are as following:

  1. Take a variable ans in which we will store the final answer and a variable maxCount in which we will store maximum of number of times a room is booked.
  2. Iterate through the array of strings from 0 to n(say iterator be i):
    1. Select the ith element of the array.
    2. Take a variable count which will store the count of the current element.
    3. Iterate through the same array from 0 to n(say iterator be j):
      1. If the current string matches with the ith increase count by 1.
    4. If the count of the current room is greater than maxCount update maxCount and ans.
    5. Return ans.
Time Complexity

O(n^2). Where n is the total number of strings in the array.

 

Since we are iterating in the array in a nested loop. Hence, the time complexity is O(n^2).

Space Complexity

O(1).

 

Since we are not using any auxiliary space. Hence the space complexity is O(1).

Code Solution
(100% EXP penalty)
Hotel Rooms
Full screen
Console