Given a string containing n numbers of words. The task is to swap the corner words of the string and reverses all the middle characters of the string.
Input: "Hello this is the GFG user" Output: "user GFG eth si siht Hello" Input: "Hello Bye" Output: "Bye Hello"
Methods:
- Using the concept of ASCII values
- Using the split() method
Method 1: Using the concept of ASCII values Â
We handle the position of space between the words using ASCII values. The ASCII value of space is 32.
- Create two string variables and two pointers lets name as index and index1
- Iterate the first loop using the index address variable till the first space and store all the characters in a string variable named First.
- Iterate another loop from reverse order using the index1 address variable till the first space and store all the characters in another string variable name as last.
- Now, we have the address variables index1 and index that both point to the next starting and ending position of the middle characters of the given string.
- Using both pointers store all the characters in reverse order in a third-string variable named as middle.
- Print the last string then the middle string then the first string.
Example:
Java
// Java Program to Swap Corner Words and Reverse Middle// CharactersÂ
// Importing utility classesimport java.util.*;// Importing input output classesimport java.io.*;Â
// Main classpublic class GFG {Â
    // Method 1    // To swap corners words    static void swap(String m, int length)    {Â
        // Declaring string variables to        // store the first and last characters        String first = "";        String last = "";Â
        // Creating first address variable        // Initially initializing with zero        int index = 0;Â
        for (index = 0; index < length; ++index) {Â
            // Checking the space            if (m.charAt(index) == 32) {                break;            }Â
            // Storing the last word in the last variable            last += m.charAt(index);        }Â
        // Now creating second address variable        // Initially initializing with zero        int index1 = 0;Â
        for (index1 = length - 1; index1 >= 0; --index1) {            if (m.charAt(index1) == 32) {                break;            }Â
            // Storing the First word of the given string            first = m.charAt(index1) + first;        }Â
        String middle = "";        for (int i = index1 - 1; i > index; --i) {            if (m.charAt(i) == 32) {                middle += " ";            }            else {Â
                // Storing all the middle words                middle += m.charAt(i);            }        }Â
        // Print and display all the string variables        System.out.print(first + " " + middle + " " + last);    }Â
    // Method 2    // Main driver method    public static void main(String[] args)    {        // Given custom input string        String m = "Hello this is the GFG";Â
        // Calculating string length using length() method        // and storing it in a variable        int length = m.length();Â
        // Calling the method 1 to swap the words        // for our custom input string        swap(m, length);    }} |
GFG eht si siht Hello
Time Complexity: O(n) where n is the length of the string
Auxiliary Space: O(1)
Method 2: Using the split() methodÂ
The string split() method breaks a given string around matches of the given regular expression.
Illustration:
Input : 016-78967
Processing : Regular Expression
Output : {"016", "78967"}
Procedure:Â
- Store all the words in an array using split() method.
- Swap the last and first element of the array.
- Iterate the loop from the second position to the last second position.
- Store all the characters in the reverse order name as the middle variable.
- Print the first element of the array then the middle variable then the last element of the array.
Example:Â
Java
// Java Program to Swap Corner Words and Reverse Middle// CharactersÂ
// Importing utility classes// Importing input output classesimport java.io.*;import java.util.*;Â
// Main classpublic class GFG {Â
    // Method 1    // To swap the words in a string    static void swap(String m, int length)    {        // Storing the words in the array        String msg[] = m.split(" ");Â
        // Now swap the position of the first and the last        // character in the string array        String temp = msg[0];        msg[0] = msg[msg.length - 1];        msg[msg.length - 1] = temp;Â
        // Declaring and initializing string for        // middle string empty middle string        String mid = "";Â
        for (int i = msg.length - 2; i >= 1; --i) {            String temp_s = msg[i];Â
            // Now storing the middle words in reverse order            for (int j = temp_s.length() - 1; j >= 0; --j) {                mid += temp_s.charAt(j);            }            mid += " ";        }Â
        // Lastly print the swapped and reversed words        System.out.print(msg[0] + " " + mid + " "                         + msg[msg.length - 1]);    }Â
    // Method 2    // Main driver method    public static void main(String[] args)    {        // Custom input string        String m = "Hello this is the GFG";Â
        // Calculating length using length() method and        // storing it        int length = m.length();Â
        // Calling the method 1 over custom input string to        // get swapped corner words with reverse middle        // characters        swap(m, length);    }} |
GFG eht si siht Hello
Time Complexity: O(n) where n is the length of the string
Auxiliary Space: O(n) where n is the length of the string

… [Trackback]
[…] There you will find 17383 additional Info to that Topic: geeksforgeeks.org/java-program-to-swap-corner-words-and-reverse-middle-characters-of-a-string/ […]
… [Trackback]
[…] Read More on that Topic: geeksforgeeks.org/java-program-to-swap-corner-words-and-reverse-middle-characters-of-a-string/ […]