![]() |
VOOZH | about |
Given an integer n and a set of characters A of size k, find a string S such that every possible string on A of length n appears exactly once as a substring in S. Such a string is called de Bruijn sequence.
Examples:
Input: n = 3, k = 2, A = {0, 1)
Output: 0011101000
All possible strings of length three (000, 001, 010, 011, 100, 101, 110 and 111) appear exactly once as sub-strings in A.Input: n = 2, k = 2, A = {0, 1)
Output: 01100
Approach:
We can solve this problem by constructing a directed graph with kn-1 nodes with each node having k outgoing edges. Each node corresponds to a string of size n-1. Every edge corresponds to one of the k characters in A and adds that character to the starting string.
For example, if n=3 and k=2, then we construct the following graph:
Below is the implementation of the above approach:
0011101000