Modify the string such that every character gets replaced with the next character in the keyboard

14 May, 2021
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 = “geeks” 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++
Java
Python3
C#
Javascript
// 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 stringstring 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 codeint main(){    string str = "geeks";    int n = str.length();     cout << getString(str, n);     return 0;}
// Java implementation of the approachimport java.util.*; class GFG{ static String CHARS = "qwertyuiopasdfghjklzxcvbnm";static int MAX = 26; // Function to return the modified Stringstatic 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 codepublic static void main(String []args){    String str = "geeks";    int n = str.length();     System.out.println(getString(str.toCharArray(), n));}} // This code is contributed by Rajput-Ji
# Python3 implementation of the approach CHARS = "qwertyuiopasdfghjklzxcvbnm";MAX = 26; # Function to return the modified stringdef 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 codeif __name__ == "__main__" :     string = "geeks";    n = len(string);     print(getString(string, n)); # This code is contributed by AnkitRai01
// C# implementation of the approachusing System;using System.Collections.Generic; class GFG{ static String CHARS = "qwertyuiopasdfghjklzxcvbnm";static int MAX = 26; // Function to return the modified Stringstatic 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 codepublic static void Main(String []args){    String str = "geeks";    int n = str.Length;     Console.WriteLine(getString(str.ToCharArray(), n));}} // This code is contributed by PrinciRaj1992
<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 = "geeks";      var n = string.length;       document.write(getString(string, n));    </script>
hrrld
 
ankthon
Rajput-Ji
princiraj1992
rdtank
Arrays
Articles
Hash
Strings
Arrays
Hash
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Find the smallest positive integer value that cannot be represented as sum of any subset of a given array
Find a triplet that sum to a given value
Product of Array except itself
Median of two sorted arrays of same size
Smallest subarray with sum greater than a given value
Tree Traversals (Inorder, Preorder and Postorder)
SQL | Join (Inner, Left, Right and Full Joins)
find command in Linux with examples
Analysis of Algorithms | Set 1 (Asymptotic Analysis)
Time Complexity and Space Complexity