Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

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

  • Last Updated : 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: hrrld
Input: str = “plmabc” 
Output: azqsnv 
 

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

 

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

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 = "geeks";
      var n = string.length;
 
      document.write(getString(string, n));
    </script>
Output: 
hrrld

 




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!