Open In App
Related Articles

Mirror characters of a string

Improve Article
Improve
Save Article
Save
Like Article
Like

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.


Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Last Updated : 25 Jul, 2022
Like Article
Save Article
Similar Reads
Related Tutorials