விசைப்பலகை வரிசை லீட்கோட் தீர்வு


சிரமம் நிலை எளிதாக
அடிக்கடி கேட்கப்படுகிறது கணித வேலைகள்
ஹேஷிங் சரம்

சிக்கல் அறிக்கை

இந்த சிக்கலில், எங்களுக்கு ஒரு வழங்கப்படுகிறது வரிசை சரங்களின். கொடுக்கப்பட்ட வரிசையில் எந்த சரங்களை எந்த வரிசையில் உள்ளோம் என்பதை நாம் கண்டுபிடிக்க வேண்டும் குவெர்டி கீழே காட்டப்பட்டுள்ளபடி விசைப்பலகை:

விசைப்பலகை வரிசை லீட்கோட் தீர்வு

வரிசையில் ஆங்கில எழுத்துக்களின் சரங்கள் உள்ளன என்று கருதுகிறோம்.

உதாரணமாக

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

அணுகுமுறை (ஹாஷிங்)

அணுகுமுறை மிகவும் நேரடியானது. எல்லா குறியீடுகளையும் அவற்றின் வரிசைகளுக்கு நாம் ஹாஷ் செய்யலாம் மற்றும் வரிசையில் உள்ள ஒவ்வொரு சரத்திற்கும் ஒவ்வொரு எழுத்திற்கும் ஒரே மதிப்பு உள்ளது என்பதை சரிபார்க்கலாம். ஆனால் ஹாஷிங் பகுதியை முன்கூட்டியே செயலாக்குவதற்கு முதலில் அனைத்து 26 எழுத்துகளுக்கும் ஹாஷ் செய்ய வேண்டும். அதன் அடிப்படையில், அவற்றை ஒரு வரிசையில் சேமித்து திருப்பித் தரலாம்.

அல்காரிதம்

  1. ஒரு ஹாஷ்மேப்பை உருவாக்கவும் rowId மற்றும் ஒரு வரிசை விளைவாக விளைவாக சரங்களை சேமிக்க
  2. பூலியன் மாறியைத் தொடங்கவும் same_row = உண்மை சரங்களில் காசோலைகளை இயக்க
  3. எல்லா எழுத்துக்களையும் அவற்றின் வரிசைகளுக்கு ஹாஷ் செய்யவும்
  4. வரிசையில் உள்ள ஒவ்வொரு சரத்திற்கும் str:
    • set_row = true என அமைக்கவும்
    • ஒவ்வொரு கதாபாத்திரத்திற்கும் குறி தொடங்கும் வரிசையில் இரண்டாவது:
      • என்றால் 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) நினைவகத்தைப் பொருட்படுத்தாமல் நினைவகத்தில் நிலையான இடமாக இருப்பதால்.