Question 5 :

Write a program to arange a sentence in alphabetical order

        Sample Input : 
        Raman was running after an elephant
            
        Output : 
        after an elephant Raman running was
    


import java.util.*;
public class arrangeWords
{
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in) ;
        System.out.println("Enter sentence") ;
        String str = sc.nextLine() ;
    
        arrangeWords obj = new arrangeWords() ;
        String arr[] = obj.separateWords(str) ;
            
        arr = obj.arrangeArray(arr) ;
            
        for(int n=0;n< arr.length ;n++)
        System.out.print(arr[n]+" ") ;
    }
    
    public String[] arrangeArray(String[] arra)
    {
        String[] arr = arra ;
        //bubblesort algorithm
        for(int a=0;a< arr.length;a++)
        {
            for(int b=0;b< arr.length-1;b++)
            {
                if(precedenceCheck(arr[b],arr[b+1])==-1) // if arr[b+1] preceeds arr[b]
                {
                    String temp = arr[b+1] ;
                    arr[b+1] = arr[b] ;
                    arr[b] = temp ;
                }
            }
        }
        return arr ;
    }
    
    public static String[] addToArray(String[] arr,String word)
    {
        String[] newArr = new String[arr.length+1] ;
        for(int j=0;j< arr.length;j++)
        newArr[j] = arr[j] ;

        newArr[arr.length] = word ;
        return newArr ;
    }
    
    public String[] separateWords(String str)
    {
        String[] arr = new String[1] ;
        str = " " + str  + " " ;
        String word = "" ;
        for(int i=1;i< str.length();i++)
        {
            if(str.charAt(i-1)==' '&&str.charAt(i)!=' ')
            {
                while(str.charAt(i)!=' ')
                    {
                    word += str.charAt(i) ;
                    i++ ;
                    }
                arr = addToArray(arr, word) ;
                word = "" ;
            }
        }
    
        String newArr[] = new String[arr.length-1] ; //eliminating null
        for(int k=1;k< arr.length;k++)
        newArr[k-1] = arr[k] ;
    
        return newArr ;
    }
    
        public static int precedenceCheck(String str1,String str2)
    {
        str1 = str1.toLowerCase() ;
        str2 = str2.toLowerCase() ;
        int len1 = str1.length() ;
        int len2 = str2.length() ;

        //flag -1 defines str2 before str1
        //flag -2 defines str1 before str2
        int flag =0 ;
        char ch1 ,ch2 ;
        while(flag>=0 && flag< Math.min(len1,len2))
        {
            ch1 = str1.charAt(flag) ;
            ch2 = str2.charAt(flag) ;
    
            if((int)ch1>(int)ch2)
            flag = -1 ;
                
            else if((int)ch1<(int)ch2)
            flag = -2 ;
                
            else if((int)ch1==(int)ch2)
            flag++ ;
        }
            
        if(flag==Math.min(len1,len2))
        {
            if(len1>=len2)
            flag = -1 ;
                
            else if(len1< len2)
            flag = -2 ;
        }
        return flag ;
    }
}

           

        
Codely Prompt ----->java arrangeWords.java
Enter sentence
Raman was running after an elephant
after an elephant Raman running was
        
    

        
Codely Prompt ----->java arrangeWords.java
I love coding
coding I love
        
    

Contribution by :-

Binit Image

Binit Ranjan