HackerRank - Merge the Tools! Solution

HackerRank - Merge the Tools! Solution

Consider the following:

  • A string, s , of length n where s = c0c1...cn-1.
  • An integer, k , where k is a factor of n.

We can split s into n/k subsegments where each subsegment, ti , consists of a contiguous block of  characters in . Then, use each  to create string  such that:

  • The characters in  are a subsequence of the characters in .
  • Any repeat occurrence of a character is removed from the string such that each character in  occurs exactly once. In other words, if the character at some index  in  occurs at a previous index  in , then do not include the character in string .

Given  and , print  lines where each line  denotes string .

Input Format

The first line contains a single string denoting .
The second line contains an integer, , denoting the length of each subsegment.

Constraints

  • , where  is the length of
  • It is guaranteed that  is a multiple of .

Output Format

Print  lines where each line  contains string .

Sample Input

AABCAAADA
3   

Sample Output

AB
CA
AD

Explanation

String  is split into  equal parts of length . We convert each  to  by removing any subsequent occurrences non-distinct characters in :

We then print each  on a new line.

Solution in Python

def merge_the_tools(string, k):
    for i in range(0,len(string), k):
    	#slice string upto k characters
        line = string[i:i+k]
        seen = set()
        for i in line:
        	#only print if we haven't already seen this character
            if i not in seen:
                print(i,end="")
                seen.add(i)
        #prints a new line
        print()

if __name__ == '__main__':
    string, k = input(), int(input())
    merge_the_tools(string, k)

Below solution is less efficient

def merge_the_tools(string, k):
    for i in range(0,len(string), k):
        line = string[i:i+k]
        new = ""
        for i in line:
            if i not in new:
                new+=i
        print(new)

string, k = input(), int(input())
merge_the_tools(string, k)

Subscribe to The Poor Coder | Algorithm Solutions

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
[email protected]
Subscribe