Modify the string such that every character gets replaced with the next character in the keyboard
Given a string str consisting of lowercase English alphabets. The task is to change each character of the string with the next letter (in a circular fashion) key in the keyboard. For example, ‘a’ gets replaced with ‘s’, ‘b’ gets replaced with ‘n’, ….., ‘l’ gets replaced with ‘z’, ….., ‘m’ gets replaced with ‘q’.
Examples:
Input: str = “Beginner”
Output: hrrldInput: str = “plmabc”
Output: azqsnv
Approach: For every lowercase character of the English alphabet, insert the character next to it in the keyboard in an unordered_map. Now traverse the given string character by character, and update every character with the map created earlier.
Below is the implementation of the above approach:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; const string CHARS = "qwertyuiopasdfghjklzxcvbnm" ; const int MAX = 26; // Function to return the modified string string getString(string str, int n) { // Map to store the next character // on the keyboard for every // possible lowercase character unordered_map< char , char > uMap; for ( int i = 0; i < MAX; i++) { uMap[CHARS[i]] = CHARS[(i + 1) % MAX]; } // Update the string for ( int i = 0; i < n; i++) { str[i] = uMap[str[i]]; } return str; } // Driver code int main() { string str = "Beginner" ; int n = str.length(); cout << getString(str, n); return 0; } |
Java
// Java implementation of the approach import java.util.*; class GFG { static String CHARS = "qwertyuiopasdfghjklzxcvbnm" ; static int MAX = 26 ; // Function to return the modified String static String getString( char [] str, int n) { // Map to store the next character // on the keyboard for every // possible lowercase character Map<Character, Character> uMap = new HashMap<>(); for ( int i = 0 ; i < MAX; i++) { uMap.put(CHARS.charAt(i), CHARS.charAt((i + 1 ) % MAX)); } // Update the String for ( int i = 0 ; i < n; i++) { str[i] = uMap.get(str[i]); } return String.valueOf(str); } // Driver code public static void main(String[] args) { String str = "Beginner" ; int n = str.length(); System.out.println(getString(str.toCharArray(), n)); } } // This code is contributed by Rajput-Ji |
Python3
# Python3 implementation of the approach CHARS = "qwertyuiopasdfghjklzxcvbnm" MAX = 26 # Function to return the modified string def getString(string, n): string = list (string) # Map to store the next character # on the keyboard for every # possible lowercase character uMap = {} for i in range ( MAX ): uMap[CHARS[i]] = CHARS[(i + 1 ) % MAX ] # Update the string for i in range (n): string[i] = uMap[string[i]] return "".join(string) # Driver code if __name__ = = "__main__" : string = "Beginner" n = len (string) print (getString(string, n)) # This code is contributed by AnkitRai01 |
C#
// C# implementation of the approach using System; using System.Collections.Generic; class GFG { static String CHARS = "qwertyuiopasdfghjklzxcvbnm" ; static int MAX = 26; // Function to return the modified String static String getString( char [] str, int n) { // Map to store the next character // on the keyboard for every // possible lowercase character Dictionary< char , char > uMap = new Dictionary< char , char >(); for ( int i = 0; i < MAX; i++) { if (!uMap.ContainsKey(CHARS[i])) uMap.Add(CHARS[i], CHARS[(i + 1) % MAX]); else uMap[CHARS[i]] = CHARS[(i + 1) % MAX]; } // Update the String for ( int i = 0; i < n; i++) { str[i] = uMap[str[i]]; } return String.Join( "" , str); } // Driver code public static void Main(String[] args) { String str = "Beginner" ; int n = str.Length; Console.WriteLine(getString(str.ToCharArray(), n)); } } // This code is contributed by PrinciRaj1992 |
Javascript
<script> // JavaScript implementation of the approach var CHARS = "qwertyuiopasdfghjklzxcvbnm" ; var MAX = 26; // Function to return the modified string function getString(string, n) { var string = string.split( "" ); // Map to store the next character // on the keyboard for every // possible lowercase character uMap = []; for (let i = 0; i < MAX; i++) { uMap[CHARS[i]] = CHARS[(i + 1) % MAX]; } // Update the string for (let i = 0; i < n; i++) { string[i] = uMap[string[i]]; } return string.join( "" ); } // Driver code var string = "Beginner" ; var n = string.length; document.write(getString(string, n)); </script> |
hrrld
Time complexity: O(n) where n is the length of the given string
Auxiliary space: O(1)