Keyboard Row Leetcode Solution


ခက်ခဲအဆင့် လွယ်ကူသော
မကြာခဏမေးတယ် သင်္ချာ
တားဆီးခြင်း ကြိုး

ပြProbleနာဖော်ပြချက်

ဒီပြproblemနာမှာငါတို့ကိုပေးထားတယ် အခင်းအကျင်း ၏။ ပေးထားသောခင်းကျင်းချက်ထဲမှမည်သည့်ကြိုးသည်မည်သည့်အတန်းနှင့်သက်ဆိုင်သည်ကိုကျွန်ုပ်တို့ရှာဖွေရန်လိုအပ်သည် QWERTY အောက်တွင်ပြထားတဲ့အတိုင်းကီးဘုတ် -

Keyboard Row Leetcode Solution

Array တွင်အင်္ဂလိပ်အက္ခရာများပါဝင်သည်ဟုကျွန်ုပ်တို့ယူဆသည်။

နမူနာ

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

ချဉ်းကပ်မှု (Hashing)

အဆိုပါချဉ်းကပ်မှုတော်တော်လေးရိုးရှင်းတဲ့ဖြစ်ပါတယ်။ indices တွေအားလုံးကိုသူတို့အတန်းထဲကိုထည့်ပြီး array ထဲရှိ string တိုင်းအတွက်အက္ခရာတစ်ခုစီမှာတူညီတဲ့ value ရှိမရှိစစ်ဆေးနိုင်ပါတယ်။ ဒါပေမယ့် hash အစိတ်အပိုင်းကို preprocess လုပ်ဖို့အက္ခရာ ၂၆ လုံးလုံးကိုပထမ ဦး စွာ hash လုပ်ဖို့လိုတယ်။ ၎င်းကို အခြေခံ၍ ၎င်းကို array ထဲသိမ်းပြီးပြန်ပို့နိုင်သည်။

algorithm

  1. HashMap တစ်ခုဖန်တီးပါ မင်္ဂလာပါ နှင့်ခင်းကျင်း ရလဒ် ထွက်ပေါ်လာတဲ့ညှို့သိုလှောင်ရန်
  2. တစ် boolean variable ကို Initialize same_row = မှန်ပါတယ် ညှို့အပေါ်စစ်ဆေးမှုများကို run ရန်
  3. အက္ခရာစာလုံးအားလုံးကိုသူတို့ရဲ့အတန်းတွေထဲမှာသိမ်းထားပါ
  4. array ထဲရှိ string str တိုင်းအတွက်:
    • same_row = စစ်မှန်တဲ့ထား
    • ဇာတ်ကောင်တိုင်းအတွက် chr အဆိုပါမှစ။ ခင်းကျင်း၌တည်၏ ဒုတိယ -
      • အလိုလျှင် rowId [chr] ညီမျှသည်မဟုတ် rowId [first_character]:
        • same_row = false ကိုသတ်မှတ်ပြီးနောက် string ကိုကူးပါ
    • same_row == မှန်လျှင်
      • အဲဒါကို Push ရလဒ်
  5. ပြန်လာ ရလဒ်

Keyboard Row Leetcode Solution ၏အကောင်အထည်ဖော်မှု

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

Keyboard Row Leetcode Solution ၏ရှုပ်ထွေးမှုအားသုံးသပ်ခြင်း

အချိန်ရှုပ်ထွေး

အို (N) ကျနော်တို့ခင်းကျင်း၌ရှိသမျှသော string ကိုအမှုအမျိုးမျိုးရှိသမျှဇာတ်ကောင်တဆင့်ဖြတ်သန်းအဖြစ်။ N = အားလုံးညှို့၏အရှည်ပေါင်းလဒ်။

အာကာသရှုပ်ထွေးမှု

အို (1) မသက်ဆိုင်ဘဲမူလမှတ်ဉာဏ်၏ကျွန်တော်မှတ်ဉာဏ်ထဲမှာကျနော်တို့စဉ်ဆက်မပြတ်အာကာသအဖြစ်။