د عام لیکونو لیټکوډ حل ومومئ


مشکل کچه په اسانۍ سره
په مکرر ډول دننه پوښتل کیږي ایڈوب ترلاسه کړئ Amazon مڼه د بلومبرګ د ګوګل د Microsoft TripAdvisor über
پیشه ځورول

ستونزه بیان

پدې ستونزه کې ، موږ ته ورکړل شو سور of ځړونه. موږ اړتیا لرو د ټولو کرکټرونو لیست چاپ کړو چې په صف کې په هر تار کې څرګندیږي (نقلونه پکې شامل دي). دا که چیرې یو کرکټر په هر تار کې دوه ځله څرګند شي ، مګر نه 2 ځله ، موږ اړتیا لرو په پایله کې دا دوه ځله ولرو.

په یاد ولرئ چې په تار کې هر کرکټر د ټیټ قضیې انګلیسي اکر دی او تارونه یې تر حد حد پورې 100 لري.

بېلګه

String_Array = {"bella" , "ciao" , "espanol"}
a
String_Array = {"qweerty" , "weerty" , "eerty"}
e e r t y

 

د عام لیکونو لیټکوډ حل ومومئ

چلند (هش میپز)

موږ کولی شو لومړی د هشامپ وکاروو ، ووایاست وروستۍ شمیره د ['a' ، 'z'] کې د کرکټرونو شمیرې ذخیره کول ترڅو د دوی ذخیره شي لږترلږه عام په ټولو تارونو کې شتون. د مثال په توګه ، که موږ وګورو چې په صف کې په هر تار کې 2 's شتون لري ، موږ دا د 2 په توګه ساتو. د دې ترلاسه کولو لپاره ، موږ په صف کې د هر تار څخه لیدنه کوو او لږترلږه وروستۍ شمیره په ['a' ، 'z'] کې د هرې کرکټر لپاره. په نهایت کې ، موږ په پایله کې سرلیک / لیست کې د دې وروستي شمېرنې له مخې یو کرکټر فشار راوړو او بیرته یې راستون کوو.

الګوریتم

  1. د هیش نقشه پیل کړئ وروستۍ شمیره د هر کرکټر لږترلږه عام ب appearanceه ساتل
  2. د هرې ټیټې قضیې لپاره انګلیسي لیک
    • خپل تنظیم کړئ وروستۍ شمیره لکه 100.
  3. د هر تار لپاره کلمه په ورکړل شوي صف کې:
    • په هرشي نقشه کې د هر کرکټر شمیرې ذخیره کړئ حساب
    • د هرې ټیټې قضیې انګلیسي لیک لپاره c:
      • ترتیب کړئ: فائنل کاونټ [سي] = ما (فائنل کاونټ [سي] ، شمېرنه [c])
  4. یو لیست / صف پیل کړئ پایله د عام کرکټرونو ارې ساتل.
  5. د هرې کرکټر لپاره په لړ کې ['a'، 'z']:
    • دا لست کې څو ځله اضافه کړئ نهایی حساب [c]
  6. پایله چاپ کړئ

د عام کریکټونو لیټکوډ حل حل موندلو پلي کول

C ++ برنامه

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

vector <string> commonChars(vector <string> A)
{
    unordered_map <char , int> finalCount;

    for(char c = 'a' ; c <= 'z' ; ++c)
        finalCount[c] = 100;

    unordered_map <char , int> count;

    for(string &word : A)
    {
        count.clear();
        for(char c : word)
            count[c]++;

        for(char c = 'a' ; c <= 'z' ; ++c)
            finalCount[c] = min(finalCount[c] , count[c]);
    }

    vector <string> result;

    string temp;

    int times;
    for(char c = 'a' ; c <= 'z' ; ++c)
    {
        times = finalCount[c];
        temp = c;
        while(times > 0)
        {
            result.push_back(temp);
            --times;
        }
    }
    return result;
}

int main()
{
    vector <string> A = {"qweerty" , "weerty" , "eerty"};
    vector <string> result = commonChars(A);
    if(result.empty())
        cout << "No common characters\n";
    else
    {
        for(string &s : result)
            cout << s << " ";
    }

    return 0;
}

جاوا پروګرام

import java.util.*;
import java.lang.*;

class common_chars
{
    public static void main(String args[])
    {
        String[] A = {"qweerty" , "weerty" , "eerty"};
        List <String> result = commonChars(A);
        if(result.size() == 0)
            System.out.println("No common characters");
        else
        {
            for(String s : result)
                System.out.print(s + " ");
        }
    }

    static List <String> commonChars(String[] A)
    {
        HashMap <Character , Integer> finalCount = new HashMap<>();

        for(char c = 'a' ; c <= 'z' ; ++c)
            finalCount.put(c , 100);

        HashMap <Character , Integer> count = new HashMap<>();
        for(String word : A)
        {
            count.clear();
            for(char c : word.toCharArray())
                count.put(c , count.getOrDefault(c , 0) + 1);

            for(char c = 'a' ; c <= 'z' ; ++c)
                finalCount.put(c , Math.min(finalCount.get(c) , count.getOrDefault(c , 0)));
        }

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

        int times;
        for(char c = 'a' ; c <= 'z' ; ++c)
        {
            times = finalCount.get(c);
            while(times > 0)
            {
                result.add(Character.toString(c));
                --times;
            }
        }
        return result;
    }
}
e e r t y

د عام کریکټونو لیټکوډ حل حل پیچلتیا تحلیل

د وخت پیچلتیا

O (N) لکه څنګه چې موږ په صف کې د هر تار یو واحد تیریدو لپاره د کرکټرونو شمیر تازه کولو لپاره. N = په صف کې د تارونو د اوږدوالي مجموعه.

د ځای پیچلتیا

O (1) لکه څنګه چې موږ د حافظې محلول ساتلو لپاره د حافظې حافظه ځای کاروو.