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 = "neveropen" ; 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 = "neveropen" ; 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 = "neveropen" 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 = "neveropen" ; 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 = "neveropen" ; if (checkValidity(str)) document.write( "Yes" ); else document.write( "No" ); </script> |
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.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!