Skip to main content

Permutations of Strings problem solution | C | HackerRank

Permutations of Strings problem solution | C | HackerRank
Input Format
The first line of each test file contains a single integer , the length of the string array .
Each of the next  lines contains a string .
Constraints
  •  contains only lowercase English letters.
Output Format
Print each permutation as a list of space-separated strings on a single line.


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int next_permutation(int n, char **s){
    // Find non-increasing suffix
    int i = n-1;
    while(i>0 && strcmp(s[i-1],s[i])>=0
        i--;    // find key
    if (i<=0return 0;
    
    // Swap key with its successor in suffix
    int j = n-1;
    while(strcmp(s[i-1],s[j])>=0
        j--;    // find rightmost successor to key
    char *tmp = s[i-1];
    s[i-1] = s[j];
    s[j] = tmp;
    
    // Reverse the suffix
    j = n-1;
    while(i<j) {
        tmp = s[i];
        s[i] = s[j];
        s[j] = tmp;
        i++;
        j--;
    }
    return 1;
}

int main()
{
    char **s;
    int n;
    scanf("%d", &n);
    s = calloc(n, sizeof(char*));
    for (int i = 0; i < n; i++)
    {
        s[i] = calloc(11sizeof(char));
        scanf("%s", s[i]);
    }
    do
    {
        for (int i = 0; i < n; i++)
            printf("%s%c", s[i], i == n - 1 ? '\n' : ' ');
    } while (next_permutation(n, s));
    for (int i = 0; i < n; i++)
        free(s[i]);
    free(s);
    return 0;
}

Comments

  1. Titanium Max Trimmer - the best way to build a modern gaming
    Titanium Max Trimmer ti89 titanium calculator is a 5-inch titanium trim as seen on tv display deccasino with 10,000-thread-count RGB LED titanium meaning displays. The display comes with a titanium symbol full-colour RGB LED display

    ReplyDelete

Post a Comment

Popular posts from this blog

Array Reversal problem solution | C | HackerRank

Insertion Sort - Part 1 | C | HackerRank |