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 = “geeks”
Output: hrrld



Input: 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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 = "geeks";
    int n = str.length();
  
    cout << getString(str, n);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 = "geeks";
    int n = str.length();
  
    System.out.println(getString(str.toCharArray(), n));
}
}
  
// This code is contributed by Rajput-Ji

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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 = "geeks"
    n = len(string); 
  
    print(getString(string, n)); 
  
# This code is contributed by AnkitRai01

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 = "geeks";
    int n = str.Length;
  
    Console.WriteLine(getString(str.ToCharArray(), n));
}
}
  
// This code is contributed by PrinciRaj1992

chevron_right


Output:

hrrld


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.





Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.