JavaScript Program to Mirror Characters of a String
Last Updated : 09 Jul, 2024
Our task is to mirror characters from the N-th position up to the end of a given string, where 'a' will be converted into 'z', 'b' into 'y', and so on. This JavaScript problem requires mirroring the characters in a string starting from a specified position. There are various approaches available to accomplish this, such as utilizing loops and maps. In this article, we will explore various methods to find the mirror characters of a string.
Examples:
Input : N = 3
paradox
Output : paizwlc
We mirror characters from position 3 to end.
Input : N = 6
pneumonia
Output : pnefnlmrz
Method 1: Creating a String:
In this method, we maintain a string (or a character array) containing the English lowercase alphabet. Starting from the pivot point up to the length of the string, we retrieve the reversed alphabetical counterpart of a character by using its ASCII value as an index. By applying this approach, we convert the given string into the desired mirrored form.
Syntax:
let modifiedString = "";
for (let i = 0; i < startPosition; i++)
modifiedString = modifiedString + inputString[i];
for (let i = startPosition; i < inputStringLength; i++)
modifiedString = modifiedString + reverseAlphabet[inputString[i].charCodeAt() - 'a'.charCodeAt()];
Example: In the code we will implement above approach by creating a string.
JavaScript function reverseAlphabetFromPosition( inputString, startPosition) { let reverseAlphabet = "zyxwvutsrqponmlkjihgfedcba"; let inputStringLength = inputString.length; let newString = ""; for (let i = 0; i < startPosition; i++) newString += inputString[i]; for (let i = startPosition; i < inputStringLength; i++) newString += reverseAlphabet[inputString[i]. charCodeAt() - 'a'.charCodeAt()]; return newString; } let givenString = "geeksforgeeks"; let startingPosition = 5; console.log( reverseAlphabetFromPosition( givenString, startingPosition - 1));
Time Complexity: O(n)
Space Complexity: O(n)
Method 2: Using a for loop
- Initialize an empty string to store the mirrored result.
- Iterate through the characters of the given string using a loop.
- When the loop index is equal to or greater than the starting position, replace the current character with its mirror (e.g., 'a' becomes 'z' and 'b' becomes 'y').
- Append the mirrored character to the result string.
Syntax:
for (let i = 0; i < givenString.length; i++) {
// condition
}
Example: In the code we will implement above approach by using single for loop.
JavaScript let givenString = "geeksforgeeks"; let startingPosition = 5; let mirroredString = ''; for (let i = 0; i < givenString.length; i++) { if (i >= startingPosition - 1) { mirroredString += String.fromCharCode(219 - givenString.charCodeAt(i)); } else { mirroredString += givenString[i]; } } console.log(mirroredString);
Time Complexity: O(n)
Space Complexity: O(n)
Method 3: Using Custom Mapping
- Create a character mapping to represent the mirror transformations.
- Initialize an empty string for the mirrored result.
- Iterate through the characters of the given string.
- If the character is in the mapping, replace it with the mapped character; otherwise, keep it as is.
Syntax:
const mirrorMap = {
'a': 'z', 'b': 'y', 'c': 'x', 'd': 'w', 'e': 'v',
'f': 'u', 'g': 't', 'h': 's', 'i': 'r', 'j': 'q',
'k': 'p', 'l': 'o', 'm': 'n', 'n': 'm', 'o': 'l',
'p': 'k', 'q': 'j', 'r': 'i', 's': 'h', 't': 'g',
'u': 'f', 'v': 'e', 'w': 'd', 'x': 'c', 'y': 'b',
'z': 'a'
};
Example: In the code we will implement above approach by using map.
JavaScript let givenString = "geeksforgeeks"; let startingPosition = 5; const mirrorMap = { 'a': 'z', 'b': 'y', 'c': 'x', 'd': 'w', 'e': 'v', 'f': 'u', 'g': 't', 'h': 's', 'i': 'r', 'j': 'q', 'k': 'p', 'l': 'o', 'm': 'n', 'n': 'm', 'o': 'l', 'p': 'k', 'q': 'j', 'r': 'i', 's': 'h', 't': 'g', 'u': 'f', 'v': 'e', 'w': 'd', 'x': 'c', 'y': 'b', 'z': 'a' }; let mirroredString = ''; for (let char of givenString) { startingPosition--; if (startingPosition > 0) { mirroredString += char; } else mirroredString += mirrorMap[char] || char; } console.log(mirroredString);
Time Complexity: O(n)
Space Complexity: O(n)
Method 4: Using Array.reduce() Method
Using the Array.reduce() method to mirror a string involves converting the string into an array of characters, then applying reduce to accumulate the characters in reverse order, effectively reversing the string.
Example: In this example The function mirrorString uses split('') and reduce() to reverse a string by accumulating characters in reverse order.
JavaScript function mirrorString(str) { return str.split('').reduce((reversed, char) => char + reversed, ''); } console.log(mirrorString("Hello, World!"));
Method 5: Using Array.map() Method
In this method, we convert the string into an array of characters using split(''). Then, we use the map() method to iterate through each character. For characters after the specified starting position, we calculate their mirrored counterparts based on their ASCII values. Finally, we join the characters back into a string.
Example:
JavaScript function mirrorStringFromPosition(inputString, startPosition) { const startIdx = startPosition - 1; const mirroredString = inputString .split('') .map((char, index) => { if (index >= startIdx) { // Calculate mirrored character based on ASCII values const mirroredCharCode = 219 - char.charCodeAt(); return String.fromCharCode(mirroredCharCode); } return char; }) .join(''); return mirroredString; } const givenString = "geeksforgeeks"; const startingPosition = 5; console.log(mirrorStringFromPosition(givenString, startingPosition));
Time Complexity: O(n)
Space Complexity: O(n)
Method 6: Using Alphabet Calculation
In this approach we calculates the mirrored character by subtracting the character's position in the alphabet from the position of the last letter ('z' or 'Z').
Example:
JavaScript function mirrorCharacters(str) { const mirror = char => { if (char >= 'a' && char <= 'z') { return String.fromCharCode('a'.charCodeAt(0) + ('z'.charCodeAt(0) - char.charCodeAt(0))); } if (char >= 'A' && char <= 'Z') { return String.fromCharCode('A'.charCodeAt(0) + ('Z'.charCodeAt(0) - char.charCodeAt(0))); } return char; }; return str.split('').map(mirror).join(''); } const input = "geeksforgeeks"; const result = mirrorCharacters(input); console.log(result);
Method 7: Using ASCII Value Manipulation
In this approach, we directly manipulate the ASCII values of the characters to find their mirrored counterparts. This method involves calculating the mirrored character by subtracting the character's ASCII value from the ASCII value of 'z' and adding the ASCII value of 'a'. This approach ensures constant time complexity for each character transformation.
Example: This example demonstrates the use of the ASCII value manipulation approach to mirror characters in a string from a specified position.
JavaScript function mirrorStringFromN(inputString, N) { let result = ''; for (let i = 0; i < inputString.length; i++) { if (i < N) { result += inputString[i]; } else { let mirroredChar = String.fromCharCode('a'.charCodeAt(0) + ('z'.charCodeAt(0) - inputString[i].charCodeAt(0))); result += mirroredChar; } } return result; } // Test cases console.log(mirrorStringFromN('paradox', 3)); // Output: paizwlc console.log(mirrorStringFromN('pneumonia', 6)); // Output: pnefnlmrz
Similar Reads
JavaScript Program to Reverse Consonants in a Given String Without Affecting the Other Elements In this article, we have given a string and the task is to write a javascript program to reverse only the consonants of a string without affecting the other elementsâ positions and printing the output in the console.Examples:Input: helloOutput: lelhoExplanation: h,l,l are consonants in the given str
6 min read
Java Program to Swap Corner Words and Reverse Middle Characters of a String 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 v
5 min read
Convert a String to a List of Characters in Java In Java, to convert a string into a list of characters, we can use several methods depending on the requirements. In this article, we will learn how to convert a string to a list of characters in Java.Example:In this example, we will use the toCharArray() method to convert a String into a character
3 min read
Convert String to Stream of Chars in Java The StringReader class from the java.io package in Java can be used to convert a String to a character stream. When you need to read characters from a string as though it were an input stream, the StringReader class can be helpful in creating a character stream from a string. In this article, we wil
2 min read
Convert List of Characters to String in Java Given a list of characters. In this article, we will write a Java program to convert the given list to a string. Example of List-to-String ConversionInput : list = {'g', 'e', 'e', 'k', 's'} Output : "geeks" Input : list = {'a', 'b', 'c'} Output : "abc" Strings - Strings in Java are objects that are
4 min read
Convert a String to Character Array in Java Converting a string to a character array is a common operation in Java. We convert string to char array in Java mostly for string manipulation, iteration, or other processing of characters. In this article, we will learn various ways to convert a string into a character array in Java with examples.E
2 min read