Skip to content
Related Articles

Related Articles

Modify the string such that every character gets replaced with the next character in the keyboard
  • Last Updated : 06 Nov, 2019

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




// 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;
}

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :