Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

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

  • Last Updated : 11 Jun, 2021

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

Attention reader! All those who say programming isn't for kids, just haven't met the right mentors yet. Join the  Demo Class for First Step to Coding Coursespecifically designed for students of class 8 to 12. 

The students will get to learn more about the world of programming in these free classes which will definitely help them in making a wise career choice in the future.

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)




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!