ಕೀಬೋರ್ಡ್ ಸಾಲು ಲೀಟ್‌ಕೋಡ್ ಪರಿಹಾರ


ತೊಂದರೆ ಮಟ್ಟ ಸುಲಭ
ಆಗಾಗ್ಗೆ ಕೇಳಲಾಗುತ್ತದೆ ಮ್ಯಾಥ್ವರ್ಕ್ಸ್
ಹ್ಯಾಶಿಂಗ್ ಸ್ಟ್ರಿಂಗ್

ಸಮಸ್ಯೆ ಹೇಳಿಕೆ

ಈ ಸಮಸ್ಯೆಯಲ್ಲಿ, ನಮಗೆ ಒಂದು ನೀಡಲಾಗಿದೆ ಸರಣಿ ತಂತಿಗಳ. ಕೊಟ್ಟಿರುವ ಶ್ರೇಣಿಯಲ್ಲಿನ ಯಾವ ತಂತಿಗಳು ಒಂದೇ ಸಾಲಿಗೆ ಸೇರಿವೆ ಎಂಬುದನ್ನು ನಾವು ಕಂಡುಹಿಡಿಯಬೇಕು QWERTY ಕೀಬೋರ್ಡ್ ಕೆಳಗೆ ತೋರಿಸಿರುವಂತೆ:

ಕೀಬೋರ್ಡ್ ಸಾಲು ಲೀಟ್‌ಕೋಡ್ ಪರಿಹಾರ

ರಚನೆಯು ಇಂಗ್ಲಿಷ್ ಅಕ್ಷರಗಳ ತಂತಿಗಳನ್ನು ಹೊಂದಿದೆ ಎಂದು ನಾವು ಭಾವಿಸುತ್ತೇವೆ.

ಉದಾಹರಣೆ

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

ಅಪ್ರೋಚ್ (ಹ್ಯಾಶಿಂಗ್)

ವಿಧಾನವು ಬಹಳ ಸರಳವಾಗಿದೆ. ನಾವು ಎಲ್ಲಾ ಸೂಚ್ಯಂಕಗಳನ್ನು ಅವುಗಳ ಸಾಲುಗಳಿಗೆ ಹ್ಯಾಶ್ ಮಾಡಬಹುದು ಮತ್ತು ರಚನೆಯ ಪ್ರತಿಯೊಂದು ಸ್ಟ್ರಿಂಗ್‌ನ ಪ್ರತಿಯೊಂದು ಅಕ್ಷರಕ್ಕೂ ಅದೇ ಮೌಲ್ಯ ಹ್ಯಾಶ್ ಆಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಬಹುದು. ಆದರೆ ಹ್ಯಾಶಿಂಗ್ ಭಾಗವನ್ನು ಪೂರ್ವ-ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ನಾವು ಮೊದಲು ಎಲ್ಲಾ 26 ಅಕ್ಷರಗಳಿಗೆ ಹ್ಯಾಶ್ ಮಾಡಬೇಕಾಗಿದೆ. ಅದರ ಆಧಾರದ ಮೇಲೆ, ನಾವು ಅವುಗಳನ್ನು ಒಂದು ಶ್ರೇಣಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ ಅದನ್ನು ಹಿಂತಿರುಗಿಸಬಹುದು.

ಕ್ರಮಾವಳಿ

  1. ಹ್ಯಾಶ್‌ಮ್ಯಾಪ್ ರಚಿಸಿ rowId ಮತ್ತು ಒಂದು ಶ್ರೇಣಿ ಫಲಿತಾಂಶ ಫಲಿತಾಂಶದ ತಂತಿಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು
  2. ಬೂಲಿಯನ್ ವೇರಿಯಬಲ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ same_row = ನಿಜ ತಂತಿಗಳಲ್ಲಿ ಚೆಕ್ ಅನ್ನು ಚಲಾಯಿಸಲು
  3. ಎಲ್ಲಾ ಅಕ್ಷರಗಳನ್ನು ಅವುಗಳ ಸಾಲುಗಳಿಗೆ ಹ್ಯಾಶ್ ಮಾಡಿ
  4. ರಚನೆಯ ಪ್ರತಿಯೊಂದು ಸ್ಟ್ರಿಂಗ್ ಸ್ಟ್ರಿಂಗ್‌ಗಾಗಿ:
    • same_row = true ಅನ್ನು ಹೊಂದಿಸಿ
    • ಪ್ರತಿ ಪಾತ್ರಕ್ಕೂ chr ನಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಶ್ರೇಣಿಯಲ್ಲಿ ಎರಡನೇ:
      • ವೇಳೆ rowId [chr] ಗೆ ಸಮನಾಗಿಲ್ಲ rowId [first_character]:
        • same_row = false ಅನ್ನು ಹೊಂದಿಸಿ ಮತ್ತು ಮುಂದಿನ ಸ್ಟ್ರಿಂಗ್‌ಗೆ ಹೋಗಿ
    • ಅದೇ_ರೋ == ನಿಜವಾಗಿದ್ದರೆ:
      • ಅದನ್ನು ಒತ್ತಿ ಫಲಿತಾಂಶ
  5. ರಿಟರ್ನ್ ಫಲಿತಾಂಶ

ಕೀಬೋರ್ಡ್ ಸಾಲು ಲೀಟ್‌ಕೋಡ್ ಪರಿಹಾರದ ಅನುಷ್ಠಾನ

ಸಿ ++ ಪ್ರೋಗ್ರಾಂ

#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;
}

ಜಾವಾ ಪ್ರೋಗ್ರಾಂ

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 = ಎಲ್ಲಾ ತಂತಿಗಳ ಉದ್ದಗಳ ಮೊತ್ತ.

ಬಾಹ್ಯಾಕಾಶ ಸಂಕೀರ್ಣತೆ

ಒ (1) ನಾವು ಮೆಮೊರಿಯನ್ನು ಲೆಕ್ಕಿಸದೆ ಮೆಮೊರಿಯಲ್ಲಿ ಸ್ಥಿರ ಜಾಗವನ್ನು ಹೊಂದಿದ್ದೇವೆ.