קלאַוויאַטור ראָוו לעעטקאָדע סאַלושאַן


שוועריקייט לעוועל גרינג
אָפט געבעטן אין מאַטהוואָרקס
האַשינג שטריקל

פּראָבלעם סטאַטעמענט

אין דעם פּראָבלעם, מיר באַקומען אַן מענגע פון סטרינגס. מיר דאַרפֿן צו געפֿינען וואָס סטרינגס אין די געגעבן מענגע געהערן צו די זעלבע רודערן אין די קווערטי קלאַוויאַטור ווי געוויזן אונטן:

קלאַוויאַטור ראָוו לעעטקאָדע סאַלושאַן

מיר יבערנעמען אַז די מענגע כּולל סטרינגס פון ענגליש אותיות.

בייַשפּיל

String_Array = {"Anand" , "Soni" , "Ashfak" , "Turipo"}
Ashfaq Turipo
String_Array = {"qaz" , "wsx" , "edc"}
No words found

צוגאַנג (כאַשינג)

דער צוגאַנג איז שיין סטרייטפאָרווערד. מיר קענען האַש אַלע די ינדאַסיז צו זייער ראָוז און קאָנטראָלירן אַז יעדער כאַראַקטער פֿאַר יעדער שטריקל אין די מענגע האט די זעלבע ווערט. אָבער, מיר דאַרפֿן צו האַש פֿאַר אַלע 26 אותיות ערשטער צו פּראַסעסינג די כאַשינג טייל. באַזירט אויף דעם, מיר קענען קראָם זיי אין אַ מענגע און צוריקקומען עס.

אַלגאָריטהם

  1. שאַפֿן אַ HashMap rowId און אַ מענגע טאַכלעס צו קראָם ריזאַלטאַנט סטרינגס
  2. יניטיאַליזירן אַ באָאָלעאַן בייַטעוודיק זעלביקער_ראָוו = אמת צו לויפן טשעקס אויף סטרינגס
  3. האַש אַלע די אותיות צו זייער ראָוז
  4. פֿאַר יעדער שטריקל אין די מענגע:
    • שטעלן זעלביקער_ראָוו = אמת
    • פֿאַר יעדער כאַראַקטער chr אין די מענגע סטאַרטינג פון די סעקונדע:
      • אויב די rowId [chr] איז נישט גלייך צו rowId [first_character]:
        • שטעלן same_row = פאַלש און שפּרינגען צו ווייַטער שטריקל
    • אויב same_row == אמת:
      • שטופּן עס צו טאַכלעס
  5. צוריקקומען טאַכלעס

ימפּלאַמענטיישאַן פון קלאַוויאַטור ראָו לעעטקאָדע סאַלושאַן

C ++ פּראָגראַם

#include <bits/stdc++.h>
using namespace std;

vector <string> findWords(vector <string> &words)
{
    unordered_map <char , int> rowId;

    string temp = "qwertyuiopQWERTYUIOP";
    for(char &i : temp)
        rowId[i] = 1;

    temp = "asdfghjklASDFGHJKL";
    for(char &i : temp)
        rowId[i] = 2;

    temp = "zxcvbnmZXCVBNM";
    for(char &i : temp)
        rowId[i] = 3;

    bool same_row;

    vector <string> result;
    for(string &word : words)
    {
        same_row = true;
        for(int i = 1 ; i < word.size() ; i++)
        {
            if(rowId[word[i]] != rowId[word[0]])
            {
                same_row = false;
                break;
            }
        }
        if(same_row)
            result.push_back(word);
    }
    return result;
}

int main()
{
    vector <string> words = {"Anand" , "Soni" , "Ashfak" , "Turipo"};
    vector <string> result = findWords(words);
    for(string &word : result)
        cout << word << " ";
    return 0;
}

Java פּראָגראַם

import java.util.*;

class keyboard_row
{
    public static void main(String args[])
    {
        String[] words = {"Anand" , "Soni" , "Ashfak" , "Turipo"};
        String result[] = findWords(words);
        for(String word : result)
            System.out.print(word + " ");
    }

    static String[] findWords(String[] words)
    {
        HashMap <Character , Integer> rowId = new HashMap <>();

        String temp = "qwertyuiopQWERTYUIOP";
        for(char i : temp.toCharArray())
            rowId.put(i , 1);

        temp = "asdfghjklASDFGHJKL";
        for(char i : temp.toCharArray())
            rowId.put(i , 2);

        temp = "zxcvbnmZXCVBNM";
        for(char i : temp.toCharArray())
            rowId.put(i , 3);

        boolean same_row;

        List <String> result_list = new ArrayList<String>();


        for(String word : words)
        {
            same_row = true;
            for(int i = 1 ; i < word.length() ; i++)
            {
                if(rowId.get(word.charAt(i)) != rowId.get(word.charAt(0)))
                {
                    same_row = false;
                    break;
                }
            }
            if(same_row)
                    result_list.add(word);
        }

        String[] result = new String[result_list.size()];
        for(int i = 0 ; i < result.length ; i++)
            result[i] = result_list.get(i);

        return result;
    }
}
Ashfak Turipo

קאַמפּלעקסיטי אַנאַליסיס פון קלאַוויאַטור ראָו לעעטקאָדע סאַלושאַן

צייט קאַמפּלעקסיטי

אָ (N) ווען מיר פאָרן דורך יעדער כאַראַקטער פון יעדער שטריקל אין די מענגע. N = סומע פון ​​לענגקטס פון אַלע סטרינגס.

ספעיס קאַמפּלעקסיטי

אָ (1) ווי מיר קעסיידערדיק פּלאַץ אין די זכּרון ראַגאַרדלאַס פון דער זכּרון.