Skip to content
Related Articles

Related Articles

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

Improve Article
Save Article
  • Last Updated : 20 Oct, 2022
Improve Article
Save Article

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

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

 

Time complexity: O(n) where n is the length of the given string
Auxiliary space: O(1)


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!