Python Program To Get Minimum Element For String Construction

When you need to find the minimum number of strings required to construct a target string, you can use Python's combinations from itertools along with set operations. This approach finds the smallest subset of strings that contains all characters needed for the target string.

Example

Below is a demonstration of finding the minimum elements needed ?

from itertools import combinations

my_list = ["python", "is", "fun", "to", "learn"]

print("The list is :")
print(my_list)

my_target_str = "onis"

my_result = -1
my_set_string = set(my_target_str)
complete_val = False

for value in range(0, len(my_list) + 1):
   for sub in combinations(my_list, value):
      temp_set = set(ele for subl in sub for ele in subl)
      
      if my_set_string.issubset(temp_set):
         my_result = value
         complete_val = True
         break
   if complete_val:
      break

print("The result is :")
print(my_result)

The output of the above code is ?

The list is :
['python', 'is', 'fun', 'to', 'learn']
The result is :
2

How It Works

The program works by testing combinations of increasing size until it finds the minimum number of strings that contain all required characters:

  • Target set creation: Convert the target string "onis" to a set {'o', 'n', 'i', 's'}
  • Combination testing: Test combinations starting from size 0, then 1, then 2, etc.
  • Character collection: For each combination, collect all characters from all strings in that combination
  • Subset check: Use issubset() to verify if all target characters are present
  • Early termination: Stop as soon as the first valid combination is found

Step-by-Step Breakdown

Let's trace through the example to understand the process ?

from itertools import combinations

strings = ["python", "is", "fun", "to", "learn"]
target = "onis"
target_chars = set(target)

print(f"Target characters needed: {target_chars}")

# Check what happens with different combination sizes
for size in range(1, 4):
    print(f"\nTesting combinations of size {size}:")
    for combo in combinations(strings, size):
        all_chars = set(char for string in combo for char in string)
        has_all = target_chars.issubset(all_chars)
        print(f"  {combo} ? chars: {sorted(all_chars)} ? valid: {has_all}")
        if has_all:
            print(f"  Found solution with {size} strings!")
            break
    else:
        continue
    break
Target characters needed: {'s', 'o', 'n', 'i'}

Testing combinations of size 1:
  ('python',) ? chars: ['h', 'n', 'o', 'p', 't', 'y'] ? valid: False
  ('is',) ? chars: ['i', 's'] ? valid: False
  ('fun',) ? chars: ['f', 'n', 'u'] ? valid: False
  ('to',) ? chars: ['o', 't'] ? valid: False
  ('learn',) ? chars: ['a', 'e', 'l', 'n', 'r'] ? valid: False

Testing combinations of size 2:
  ('python', 'is') ? chars: ['h', 'i', 'n', 'o', 'p', 's', 't', 'y'] ? valid: True
  Found solution with 2 strings!

Conclusion

This algorithm efficiently finds the minimum number of strings needed to construct a target string by testing combinations in ascending order of size. The combination of "python" and "is" provides all characters ('o', 'n', 'i', 's') needed to construct "onis".

Updated on: 2026-03-26T01:47:10+05:30

189 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements