Open In App

Check whether the string can be printed using same row of qwerty keypad

Improve
Improve
Like Article
Like
Save
Share
Report

Given a string S, the task is to check whether the string can be typed using only a single row of the qwerty keyboard. 

Examples: 

Input: S = “Dad” 
Output: Yes 
Explanation: 
Characters “D” and “a” are present in the same row of qwerty keypad. That is second Row.

Input: S = “Mom” 
Output: No 
Explanation: 
Characters “M” and “o” are not present in the same row of qwerty keypad. 

Approach: The idea is to store the characters of the same row of the qwerty keypad into different hash-maps to check that all the characters of the string are from the same row.

Below is the implementation of the above approach: 

C++




// C++ Program to check whether
// the string can be printed
// using same row of qwerty keypad
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the row of the
// character in the qwerty keypad
int checkQwertyRow(char x)
{
    // Sets to include the characters
    // from the same row of the qwerty keypad
    set<char> first_row
        = { '1', '2', '3', '4',
            '5', '6', '7', '8',
            '9', '0', '-', '=' };
    set<char> second_row
        = { 'Q', 'W', 'E', 'R', 'T',
            'Y', 'U', 'I', 'O', 'P',
            '[', ']', 'q', 'w', 'e',
            'r', 't', 'y', 'u', 'i',
            'o', 'p' };
    set<char> third_row
        = { 'A', 'S', 'D', 'F', 'G',
            'H', 'J', 'K', 'L', ';',
            ':', 'a', 's', 'd', 'f',
            'g', 'h', 'j', 'k', 'l' };
    set<char> fourth_row
        = { 'Z', 'X', 'C', 'V', 'B',
            'N', 'M', ',', '.',
            '/', 'z', 'x', 'c', 'v',
            'b', 'n', 'm' };
 
    // Condition to check the row of the
    // current character of the string
    if (first_row.count(x) > 0) {
        return 1;
    }
    else if (second_row.count(x) > 0) {
        return 2;
    }
    else if (third_row.count(x) > 0) {
        return 3;
    }
    else if (fourth_row.count(x) > 0) {
        return 4;
    }
 
    return 0;
}
 
// Function to check the characters are
// from the same row of the qwerty keypad
bool checkValidity(string str)
{
    char x = str[0];
    int row = checkQwertyRow(x);
    for (int i = 0; i < str.length(); i++) {
        x = str[i];
        if (row != checkQwertyRow(x)) {
            return false;
        }
    }
    return true;
}
 
// Driver Code
int main()
{
    string str = "GeeksforGeeks";
 
    if (checkValidity(str))
        cout << "Yes";
    else
        cout << "No";
 
    return (0);
}


Java




// Java program to check whether
// the string can be printed
// using same row of qwerty keypad
import java.util.*;
 
class GFG{
 
// Function to find the row of the
// character in the qwerty keypad
static int checkQwertyRow(char x)
{
     
    // Sets to include the characters
    // from the same row of the qwerty keypad
    Character[] first_row1 = { '1', '2', '3', '4',
                               '5', '6', '7', '8',
                               '9', '0', '-', '=' };
    Set<Character> first_row = new HashSet<>(
     Arrays.asList(first_row1));
      
    Character[] second_row1 = { 'Q', 'W', 'E', 'R', 'T',
                                'Y', 'U', 'I', 'O', 'P',
                                '[', ']', 'q', 'w', 'e',
                                'r', 't', 'y', 'u', 'i',
                                'o', 'p' };
    Set<Character> second_row = new HashSet<>(
     Arrays.asList(second_row1));
      
    Character[] third_row1 = { 'A', 'S', 'D', 'F', 'G',
                               'H', 'J', 'K', 'L', ';',
                               ':', 'a', 's', 'd', 'f',
                               'g', 'h', 'j', 'k', 'l' };
    Set<Character> third_row = new HashSet<>(
     Arrays.asList(third_row1));
      
    Character[] fourth_row1 = { 'Z', 'X', 'C', 'V', 'B',
                                'N', 'M', ',', '.',
                                '/', 'z', 'x', 'c', 'v',
                                'b', 'n', 'm' };
    Set<Character> fourth_row = new HashSet<>(
     Arrays.asList(fourth_row1));
 
    // Condition to check the row of the
    // current character of the string
    if (first_row.contains(x))
    {
        return 1;
    }
    else if (second_row.contains(x))
    {
        return 2;
    }
    else if (third_row.contains(x))
    {
        return 3;
    }
    else if (fourth_row.contains(x))
    {
        return 4;
    }
    return 0;
}
 
// Function to check the characters are
// from the same row of the qwerty keypad
static boolean checkValidity(String str)
{
    char x = str.charAt(0);
    int row = checkQwertyRow(x);
     
    for(int i = 0; i < str.length(); i++)
    {
        x = str.charAt(i);
        if (row != checkQwertyRow(x))
        {
            return false;
        }
    }
    return true;
}
 
// Driver code
public static void main(String[] args)
{
    String str = "GeeksforGeeks";
 
    if (checkValidity(str))
        System.out.println("Yes");
    else
        System.out.println("No");
}
}
 
// This code is contributed by offbeat


Python3




# Python3 program to check whether
# the string can be printed
# using same row of qwerty keypad
 
# Function to find the row of the
# character in the qwerty keypad
def checkQwertyRow(x):
 
    # Sets to include the
    # characters from the
    # same row of the qwerty keypad
    first_row = ['1', '2', '3', '4',
                 '5', '6', '7', '8',
                 '9', '0', '-', '=']
 
    second_row = ['Q', 'W', 'E', 'R',
                  'T', 'Y', 'U', 'I',
                  'O', 'P', '[', ']',
                  'q', 'w', 'e', 'r',
                  't', 'y', 'u', 'i',
                  'o', 'p']
    third_row = ['A', 'S', 'D', 'F',
                 'G', 'H', 'J', 'K',
                 'L', ';', ':', 'a',
                 's', 'd', 'f', 'g',
                 'h', 'j', 'k', 'l']
    fourth_row = ['Z', 'X', 'C', 'V',
                  'B', 'N', 'M', ',',
                  '.', '/', 'z', 'x',
                  'c', 'v', 'b', 'n', 'm']
 
    # Condition to check the
    # row of the current character
    # of the string
    if(first_row.count(x) > 0):
        return 1
    elif(second_row.count(x) > 0):
        return 2
    elif(third_row.count(x) > 0):
        return 3
    elif(fourth_row.count(x) > 0):
        return 4
    return 0
 
# Function to check the 
# characters are from the
# same row of the qwerty keypad
def checkValidity(str):
   
    x = str[0]
    row = checkQwertyRow(x)
 
    for i in range(len(str)):
        x = str[i]
        if(row != checkQwertyRow(x)):
            return False
    return True
 
# Driver Code
str = "GeeksforGeeks"
 
if(checkValidity(str)):
    print("Yes")
else:
    print("No")
 
# This code is contributed by avanitrachhadiya2155


C#




// C# program to check whether
// the string can be printed
// using same row of qwerty keypad
using System;
using System.Collections.Generic;
 
class GFG{
 
// Function to find the row of the
// character in the qwerty keypad
static int checkQwertyRow(char x)
{
     
    // Sets to include the characters
    // from the same row of the qwerty keypad
    char[] first_row1 = { '1', '2', '3', '4',
                          '5', '6', '7', '8',
                          '9', '0', '-', '=' };
    HashSet<char> first_row = new HashSet<char>(
                              first_row1);
     
    char[] second_row1 = { 'Q', 'W', 'E', 'R', 'T',
                           'Y', 'U', 'I', 'O', 'P',
                           '[', ']', 'q', 'w', 'e',
                           'r', 't', 'y', 'u', 'i',
                           'o', 'p' };
    HashSet<char> second_row = new HashSet<char>(
                               second_row1);
     
    char[] third_row1 = { 'A', 'S', 'D', 'F', 'G',
                          'H', 'J', 'K', 'L', ';',
                          ':', 'a', 's', 'd', 'f',
                          'g', 'h', 'j', 'k', 'l' };
    HashSet<char> third_row = new HashSet<char>(
                              third_row1);
     
    char[] fourth_row1 = { 'Z', 'X', 'C', 'V', 'B',
                           'N', 'M', ',', '.', '/',
                           'z', 'x', 'c', 'v', 'b',
                           'n', 'm' };
    HashSet<char> fourth_row = new HashSet<char>(
                               fourth_row1);
 
    // Condition to check the row of the
    // current character of the string
    if (first_row.Contains(x))
    {
        return 1;
    }
    else if (second_row.Contains(x))
    {
        return 2;
    }
    else if (third_row.Contains(x))
    {
        return 3;
    }
    else if (fourth_row.Contains(x))
    {
        return 4;
    }
    return 0;
}
 
// Function to check the characters are
// from the same row of the qwerty keypad
static bool checkValidity(String str)
{
    char x = str[0];
    int row = checkQwertyRow(x);
     
    for(int i = 0; i < str.Length; i++)
    {
        x = str[i];
        if (row != checkQwertyRow(x))
        {
            return false;
        }
    }
    return true;
}
 
// Driver code
public static void Main(String[] args)
{
    String str = "GeeksforGeeks";
 
    if (checkValidity(str))
        Console.WriteLine("Yes");
    else
        Console.WriteLine("No");
}
}
 
// This code is contributed by Amit Katiyar


Javascript




<script>
 
      // JavaScript program to check whether
      // the string can be printed
      // using same row of qwerty keypad
       
      // Function to find the row of the
      // character in the qwerty keypad
      function checkQwertyRow(x) {
        // Sets to include the characters
        // from the same row of the qwerty keypad
        var first_row = [
          "1",
          "2",
          "3",
          "4",
          "5",
          "6",
          "7",
          "8",
          "9",
          "0",
          "-",
          "=",
        ];
 
        var second_row = [
          "Q",
          "W",
          "E",
          "R",
          "T",
          "Y",
          "U",
          "I",
          "O",
          "P",
          "[",
          "]",
          "q",
          "w",
          "e",
          "r",
          "t",
          "y",
          "u",
          "i",
          "o",
          "p",
        ];
        var third_row = [
          "A",
          "S",
          "D",
          "F",
          "G",
          "H",
          "J",
          "K",
          "L",
          ";",
          ":",
          "a",
          "s",
          "d",
          "f",
          "g",
          "h",
          "j",
          "k",
          "l",
        ];
        var fourth_row = [
          "Z",
          "X",
          "C",
          "V",
          "B",
          "N",
          "M",
          ",",
          ".",
          "/",
          "z",
          "x",
          "c",
          "v",
          "b",
          "n",
          "m",
        ];
 
        // Condition to check the row of the
        // current character of the string
        if (first_row.includes(x)) {
          return 1;
        } else if (second_row.includes(x)) {
          return 2;
        } else if (third_row.includes(x)) {
          return 3;
        } else if (fourth_row.includes(x)) {
          return 4;
        }
        return 0;
      }
 
      // Function to check the characters are
      // from the same row of the qwerty keypad
      function checkValidity(str) {
        var x = str[0];
        var row = checkQwertyRow(x);
 
        for (var i = 0; i < str.length; i++) {
          x = str[i];
          if (row !== checkQwertyRow(x)) {
            return false;
          }
        }
        return true;
      }
 
      // Driver code
      var str = "GeeksforGeeks";
 
      if (checkValidity(str)) document.write("Yes");
      else document.write("No");
       
</script>


Output: 

No

 

Time Complexity: O(N), where N is the length of the given string.|
Auxiliary Space: O(1), no extra space is required, so it is a constant.



Last Updated : 29 Dec, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads