Skip to content
Related Articles

Related Articles

Improve Article
Reorder the position of the words in alphabetical order
  • Last Updated : 28 May, 2021

Given an array arr[] of strings, the task is to reorder the strings lexicographically and print their positions in the original list.
 

Examples: 

Input: arr[] = {“zxc”, “efg”, “jkl”} 
Output: 2 3 1 
The sorted list will be {“efg”, “jkl”, “zxc”} and their 
original positions were 2, 3 and 1 respectively.
 

Input: arr[] = {“live”, “place”, “travel”, “word”, “sky”} 
Output: 1 2 5 3 4  

Approach: Assign all the words with an integer number equal to their position in the array. Then they sort the list of words lexicographically and their positions are altered, and therefore, their positions are printed starting from the first word in the sorted list.



Below is the implementation of the above approach: 

C++




// CPP implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the ordering of words
void reArrange(string words[], int n)
{
 
    // Creating list of words and assigning
    // them index numbers
    map<string, int> mp;
    for (int i = 0; i < n; i++)
        mp[words[i]] = i + 1;
 
    // Sort the list of words
    // lexicographically
    sort(words, words + n);
 
    // Print the ordering
    for (int i = 0; i < n; i++)
        cout << mp[words[i]] << " ";
}
 
// Driver Code
int main()
{
    string words[] = { "live", "place", "travel", "word", "sky" };
    int n = sizeof(words) / sizeof(words[0]);
    reArrange(words, n);
}
 
// This code is contributed by
// Surendra_Gangwar

Java




// Java implementation of the approach
import java.util.*;
class GFG {
 
    // Function to print the ordering of words
    static void reArrange(String words[], int n)
    {
 
        // Creating list of words and assigning
        // them index numbers
        HashMap<String, Integer> freq = new HashMap<>();
        for (int i = 0; i < n; i++) {
            freq.put(words[i], (i + 1));
        }
 
        // Sort the list of words
        // lexicographically
        Arrays.sort(words);
 
        // Print the ordering
        for (int i = 0; i < n; i++)
            System.out.print(freq.get(words[i]) + " ");
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        String words[] = { "live", "place", "travel", "word", "sky" };
        int n = words.length;
        reArrange(words, n);
    }
}

Python3




# Python3 implementation of the approach
 
# Function to print the ordering of words
def reArrange(words, n):
    # Creating list of words and assigning
    # them index numbers
    mp = {}
    for i in range(n):
        mp[words[i]] = i + 1
 
    # Sort the list of words
    # lexicographically
    words.sort();
 
    # Print the ordering
    for i in range(n):
        print(mp[words[i]], end = " ")
 
# Driver Code
 
words = [ "live", "place", "travel", "word", "sky" ]
n = len(words)
reArrange(words, n);
 
# This code is contributed by
# Rajnis09

C#




// C# implementation of the approach
using System;
using System.Collections.Generic;
 
class GFG {
 
    // Function to print the ordering of words
    static void reArrange(String[] words, int n)
    {
 
        // Creating list of words and assigning
        // them index numbers
        Dictionary<String, int> freq = new Dictionary<String, int>();
        for (int i = 0; i < n; i++) {
            freq.Add(words[i], (i + 1));
        }
 
        // Sort the list of words
        // lexicographically
        Array.Sort(words);
 
        // Print the ordering
        for (int i = 0; i < n; i++)
            Console.Write(freq[words[i]] + " ");
    }
 
    // Driver Code
    public static void Main(String[] args)
    {
        String[] words = { "live", "place", "travel", "word", "sky" };
        int n = words.Length;
        reArrange(words, n);
    }
}
 
// This code contributed by Rajput-Ji

PHP




<?php
// PHP implementation of the approach
 
    // Function to print the ordering of words
    function reArrange($words, $n)
    {
 
        // Creating list of words and assigning
        // them index numbers
        $freq = array();
        for ($i = 0; $i < $n; $i++)
        {
            $freq[$words[$i]] = ($i + 1) ;
        }
 
        // Sort the list of words
        // lexicographically
        sort($words);
 
        // Print the ordering
        for ($i = 0; $i < $n; $i++)
            echo $freq[$words[$i]], " " ;
    }
 
    // Driver Code
    $words = array( "live", "place", "travel", "word", "sky" );
    $n = count($words);
    reArrange($words, $n);
     
    // This code is contributed by Ryuga
?>

Javascript




<script>
 
// Javascript implementation of the approach
 
// Function to print the ordering of words
function reArrange(words, n)
{
 
    // Creating list of words and assigning
    // them index numbers
    var mp = new Map();
    for (var i = 0; i < n; i++)
        mp.set(words[i], i + 1);
 
    // Sort the list of words
    // lexicographically
    words.sort();
 
    // Print the ordering
    for (var i = 0; i < n; i++)
    {
        document.write(mp.get(words[i])+" ");
    }
}
 
// Driver Code
var words = ["live", "place", "travel", "word", "sky"];
var n = words.length;
reArrange(words, n);
 
 
</script>
Output: 
1 2 5 3 4

 

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live 




My Personal Notes arrow_drop_up
Recommended Articles
Page :