 GFG App
Open App Browser
Continue

# Mirror characters of a string

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
Output : paizwlc
We mirror characters from position 3 to end.

Input : N = 6
pneumonia
Output : pnefnlmrz```

Below are different characters and their mirrors. 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 ` `#include ` `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

 ``

## Javascript

 ``

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.

My Personal Notes arrow_drop_up