Related Articles

Related Articles

Minimum length of string having all permutation of given string.
  • Last Updated : 16 Oct, 2018

Given a string S where, 1\leq length\; of\; S\leq 26. Assume that all the characters in S are unique. The task is to compute the minimum length of a string which consists of all the permutations of the given string in any order.
Note: All permutations must be present as a substring in the resulting string.

Examples:

Input : ab
Output : 3
The resulting string is aba.

Input : abc
Output : 9
The resulting string is abcabacba.

Approach: The answer to the above problem is simple.

  1. If the length of string is 1, then answer is 1.
  2. If the length of string is 2, then answer is 3.
  3. If the length of string is 3, then answer is 9.

So, after observing the output we can see that if the length of the string is n, then answer will be 1! + 2! + … + n!. Hence we can precompute the result upto n = 26 in vector of strings.
Below is the implementation of above approach.

C++



filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation to find the minimum length of
// string having all permutation of the given string
#include <bits/stdc++.h>
using namespace std;
  
// function to find minimum length of required string
void minLength(string s)
{
  
    // Precomputed answers for all String.
    vector<string> minlen = { "0", "1", "3", "9", "33", "153", "872",
                    "5912", "46232", "409112", "4037912", "43954712",
                    "522956312", "6749977112", "93928268312"
                    "1401602636312", "22324392524312", "378011820620312"
                    "6780385526348312", "128425485935180312"
                    "2561327494111820312", "53652269665821260312",
                     "1177652997443428940312", "27029669736328405580312",
                     "647478071469567844940312", "16158688114800553828940312"
                     "419450149241406189412940312" };
  
    cout << minlen[s.size()];
}
  
// Driver program
int main()
{
    string s = "abc";
  
    // function call to print minimum length of string
    minLength(s);
  
    return 0;
}
// This code is written by
// Sanjit_Prasad

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation to find 
// the minimum length of string 
// having all permutation of
// the given string 
class GFG
{
  
// function to find minimum 
// length of required string 
static void minLength(String s)
{
  
    // Precomputed answers for all String.
    String minlen[] = { "0", "1", "3", "9", "33", "153", "872",
                        "5912", "46232", "409112", "4037912",
                        "43954712", "522956312", "6749977112"
                        "93928268312", "1401602636312",
                        "22324392524312", "378011820620312"
                        "6780385526348312", "128425485935180312"
                        "2561327494111820312", "53652269665821260312",
                        "1177652997443428940312", "27029669736328405580312",
                        "647478071469567844940312"
                        "16158688114800553828940312"
                        "419450149241406189412940312"};
  
    System.out.println(minlen[s.length()]);
}
  
// Driver code 
public static void main (String args[])
{
    String s = "abc";
  
    // function call to print 
    // minimum length of string
    minLength(s);
  
}
}
  
// This code is contributed by ANKITRAI1

chevron_right


Python

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python implementation to find the minimum length of
# string having all permutation of the given string.
  
# function to find minimum length of required string.
def minLength(s):
  
    # Precomputed answers for all String.
    minlen = ["0", "1", "3", "9", "33", "153", "872", "5912", "46232", "409112", "4037912", "43954712",
              "522956312", "6749977112", "93928268312", "1401602636312", "22324392524312",
              "378011820620312", "6780385526348312", "128425485935180312", "2561327494111820312",
              "53652269665821260312", "1177652997443428940312", "27029669736328405580312",
              "647478071469567844940312", "16158688114800553828940312", "419450149241406189412940312"]
  
    print(minlen[len(s)])
  
  
# Driver program
s = "abc"
  
# function call to print minimum length of string
minLength(s)
  
# This code is written by
# Sanjit_Prasad

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation to find 
// the minimum length of string 
// having all permutation of
// the given string 
using System;
  
class GFG
{
  
// function to find minimum 
// length of required string 
static void minLength(String s)
{
  
    // Precomputed answers for all String.
    String[] minlen = { "0", "1", "3", "9", "33", "153", "872",
                        "5912", "46232", "409112", "4037912",
                        "43954712", "522956312", "6749977112"
                        "93928268312", "1401602636312",
                        "22324392524312", "378011820620312"
                        "6780385526348312", "128425485935180312"
                        "2561327494111820312", "53652269665821260312",
                        "1177652997443428940312", "27029669736328405580312",
                        "647478071469567844940312"
                        "16158688114800553828940312"
                        "419450149241406189412940312"};
  
    Console.WriteLine(minlen[s.Length]);
}
  
// Driver code 
public static void Main ()
{
    String s = "abc";
  
    // function call to print 
    // minimum length of string
    minLength(s);
}
}
  
// This code is contributed
// by Akanksha Rai(Abby_akku)

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation to find the 
// minimum length of string having
// all permutation of the given string
  
// function to find minimum length 
// of required string
function minLength($s)
{
    // Precomputed answers for all String.
    $minlen = array("0", "1", "3", "9", "33", "153", "872",
                    "5912", "46232", "409112", "4037912"
                    "43954712", "522956312", "6749977112"
                    "93928268312", "1401602636312"
                    "22324392524312", "378011820620312"
                    "6780385526348312", "128425485935180312"
                    "2561327494111820312", "53652269665821260312",
                    "1177652997443428940312", "27029669736328405580312",
                    "647478071469567844940312", "16158688114800553828940312"
                    "419450149241406189412940312");
  
    echo $minlen[strlen($s)];
}
  
// Driver Code
$s = "abc";
  
// function call to print 
// minimum length of string
minLength($s);
  
// This code is written by
// ash264
?>

chevron_right



Output:

9

Time Complexity: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :