Open In App

Mirror characters of a string

Last Updated : 25 Apr, 2024
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.

[Tex]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   [/Tex]

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.

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>

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 ?>


Output

pnefnlmrz

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.

Using Mapping:

Follow the below steps:

  • Firslty, mirror_characters() function takes a string and returns a number N.
  • The first step is to map the characters to the mirrored characters using dictionary comprehension.
  • The second step is to iterate over the characters in the string, starting from position N, and constructing the resulting string.
  • The final step is to return the mirrored string.

Below is the implementation of the above approach:

Python3

def mirror_characters(string, N): # Create a mapping of characters to their mirrored counterparts mapping = {chr(i): chr(219 - i) for i in range(97, 123)} # Initialize the result string result = "" # Iterate over the characters of the string for i, char in enumerate(string): if i >= N - 1: # Mirror the character if its position is equal to or greater than N mirrored_char = mapping.get(char, char) result += mirrored_char else: result += char return result # Example usage: N = 3 string1 = "paradox" print(mirror_characters(string1, N))


Output

paizwlc

Time complexity: O(n), where n is the length of the input string.

Auxiliary Space: O(n)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads