Open In App

Mirror characters of a string

Improve
Improve
Like Article
Like
Save
Share
Report

Given a string and a number N, we need to mirror the characters from N-th position up to the length of the string in the alphabetical order. In mirror operation, we change ‘a’ to ‘z’, ‘b’ to ‘y’, and so on.

Examples: 

Input : N = 3
        paradox
Output : paizwlc
We mirror characters from position 3 to end.

Input : N = 6
        pneumonia
Output : pnefnlmrz

Below are different characters and their mirrors.

a b c d e f g h i j k l m || n o p q r s t u v w x y z

Mirroring the alphabetical order means that a corresponds to z, b corresponds to y. Which means that first character becomes the last and so on. Now, to achieve this we maintain a string(or a character array) which contains the English alphabets in lower case. Now from the pivot point up to the length, we can look up the reverse alphabetical order of a character by using its ASCII value as an index. Using the above technique, we transform the given string in the required one.

Implementation:

C++

// C++ code to find the reverse alphabetical
// order from a given position
#include <iostream>
#include <string>
using namespace std;
 
// Function which take the given string
// and the position from which the reversing shall
// be done and returns the modified string
string compute(string str, int n)
{
    // Creating a string having reversed alphabetical order
    string reverseAlphabet = "zyxwvutsrqponmlkjihgfedcba";
    int l = str.length();
 
    // The string up to the point specified in the question,
    // the string remains unchanged and from the point up to
    // the length of the string, we reverse the alphabetical
    // order
    for (int i = n; i < l; i++)
        str[i] = reverseAlphabet[str[i] - 'a'];
 
    return str;
}
 
// Driver function
int main()
{
    string str = "pneumonia";
    int n = 4;
    string answer = compute(str, n - 1);
    cout << answer;
    return 0;
}

                    

Java

// Java code to find the reverse alphabetical
// order from a given position
import java.io.*;
 
class GeeksforGeeks {
 
    // Function which take the given string
    // and the position from which the reversing shall
    // be done and returns the modified string
    static String compute(String str, int n)
    {
 
        // Creating a string having reversed alphabetical order
        String reverseAlphabet = "zyxwvutsrqponmlkjihgfedcba";
        int l = str.length();
         
        // The string up to the point specified in the question,
        // the string remains unchanged and from the point up to
        // the length of the string, we reverse the alphabetical order
        String answer = "";
        for (int i = 0; i < n; i++)
            answer = answer + str.charAt(i);
        for (int i = n; i < l; i++)
            answer = answer + reverseAlphabet.charAt(str.charAt(i) - 'a');
        return answer;
    }
 
    // Driver function
    public static void main(String args[])
    {
        String str = "pneumonia";
        int n = 4;
        System.out.print(compute(str, n - 1));
    }
}

                    

Python3

# python code to find the reverse
# alphabetical order from a given
# position
 
# Function which take the given string and the
# position from which the reversing shall be
# done and returns the modified string
def compute(st, n):
     
    # Creating a string having reversed
    # alphabetical order
    reverseAlphabet = "zyxwvutsrqponmlkjihgfedcba"
    l = len(st)
     
    # The string up to the point specified in the
    # question, the string remains unchanged and
    # from the point up to the length of the
    # string, we reverse the alphabetical order
    answer = ""
    for i in range(0, n):
        answer = answer + st[i];
             
    for i in range(n, l):
        answer = (answer +
        reverseAlphabet[ord(st[i]) - ord('a')]);
         
    return answer;
 
# Driver function
st = "pneumonia"
n = 4
answer = compute(st, n - 1)
print(answer)
 
# This code is contributed by Sam007.

                    

C#

// C# code to find the reverse alphabetical
// order from a given position
using System;
 
class GFG {
     
    // Function which take the given string
    // and the position from which the
    // reversing shall be done and returns
    // the modified string
    static String compute(string str, int n)
    {
 
        // Creating a string having reversed
        // alphabetical order
        string reverseAlphabet =
               "zyxwvutsrqponmlkjihgfedcba";
        int l = str.Length;
         
        // The string up to the point
        // specified in the question,
        // the string remains unchanged
        // and from the point up to
        // the length of the string, we
        // reverse the alphabetical order
        String answer = "";
         
        for (int i = 0; i < n; i++)
            answer = answer + str[i];
             
        for (int i = n; i < l; i++)
            answer = answer +
               reverseAlphabet[str[i]- 'a'];
        return answer;
    }
 
    // Driver function
    public static void Main()
    {
        string str = "pneumonia";
        int n = 4;
        Console.Write(compute(str, n - 1));
    }
 
}
 
// This code is contributed by Sam007.

                    

php

<?php
// php code to find the reverse alphabetical
// order from a given position
 
// Function which take the given string
// and the position from which the reversing
// shall be done and returns the modified
// string
function compute($str, $n)
{
    // Creating a string having reversed
    // alphabetical order
    $reverseAlphabet =
            "zyxwvutsrqponmlkjihgfedcba";
    $l = strlen($str);
         
    // The string up to the point
    // specified in the question,
    // the string remains unchanged
    // and from the point up to
    // the length of the string, we
    // reverse the alphabetical order
    $answer = "";
         
    for ($i = 0; $i < $n; $i++)
        $answer = $answer.$str[$i];
             
    for ($i = $n; $i < $l; $i++){
        $answer = $answer.$reverseAlphabet[
                   ord($str[$i])- ord('a')];
    }
             
    return $answer;
}
 
// Driver function
    $str = "pneumonia";
    $n = 4;
    $answer = compute($str, $n - 1);
    echo $answer;
 
// This code is contributed by Sam007
?>

                    

Javascript

<script>
    // Javascript code to find the reverse alphabetical
    // order from a given position
     
    // Function which take the given string
    // and the position from which the
    // reversing shall be done and returns
    // the modified string
    function compute(str, n)
    {
   
        // Creating a string having reversed
        // alphabetical order
        let reverseAlphabet =
               "zyxwvutsrqponmlkjihgfedcba";
        let l = str.length;
           
        // The string up to the point
        // specified in the question,
        // the string remains unchanged
        // and from the point up to
        // the length of the string, we
        // reverse the alphabetical order
        let answer = "";
           
        for (let i = 0; i < n; i++)
            answer = answer + str[i];
               
        for (let i = n; i < l; i++)
            answer = answer + reverseAlphabet[str[i].charCodeAt()- 'a'.charCodeAt()];
        return answer;
    }
     
    let str = "pneumonia";
    let n = 4;
    document.write(compute(str, n - 1));
        
</script>

                    

Output: 

pnefnlmrz

Time Complexity: O(n), where n represents the size of the given string.
Auxiliary Space: O(1), no extra space is required, so it is a constant.



Last Updated : 25 Jul, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads