HackerRank - Merge the Tools! Solution
1 min read

# 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)

# Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

That's okay. But without advertising-income, we can't keep making this site awesome.

We don't have any banner, Flash, animation, obnoxious sound, or popup ad. We do not implement these annoying types of ads!

We need money to operate the site, and almost all of it comes from our online advertising.

Please add thepoorcoder.com to your ad blocking whitelist or disable your adblocking software.

×