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


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

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

אין דעם פּראָבלעם, מיר באַקומען אַ רשימה פון שטריקל. מיר מוזן געפֿינען די אותיות וואָס זענען פּראָסט אין אַלע סטרינגס. אויב אַ כאַראַקטער איז פאָרשטעלן אין אַלע סטרינגס אין קייפל מאָל, מיר מוזן אַרויסגעבן דעם כאַראַקטער קייפל מאָל.
רעכן מיר האָבן אַ פּלאַץ פון סטרינגס
["בעלאַ", "פירמע", "וואַל"]
מיר קענען זען אַז דער כאַראַקטער 'e' איז פאָרשטעלן אַמאָל אין אַלע סטרינגס, איך איז צוויי מאָל אין אַלע סטרינגס. קיין אנדערע כאַראַקטער איז פּראָסט.
אַזוי, אין אונדזער רעזולטאַט רשימה, דער אות 'e' וועט זיין פאָרשטעלן אַמאָל און דער אות 'ל' וועט זיין פאָרשטעלן צוויי מאָל.

בייַשפּיל

["bella","label","roller"]
["e","l","l"]
["cool","lock","cook"]
["c","o"]

צוגאַנג

מיר קענען זען אַז מיר דאַרפֿן צו געפֿינען די געוויינטלעך אָפטקייַט פון אותיות אַז אין אַלע סטרינגס דאָ.
פֿאַר יעדער שטריקל, מיר קענען מאַכן אַ ציילן מענגע פון ​​גרייס 26 מיט די אָפטקייט פון אותיות אַז. אינדעקס 0 וועט ציילן 'a' אין דעם שטריקל און אינדעקס 1 וועט ציילן 'b' און אַזוי אויף.
איצט, פֿאַר יעדער כאַראַקטער פֿון a ביז z, מיר האָבן צו געפֿינען די מינימום ציילן וואָס קען זיין פאָרשטעלן אין קיין פון די ערייז באשאפן אויבן. מיר טאָן דאָס ווייַל מיר זענען אינטערעסירט אין מינימום בייַזייַן פון אַ כאַראַקטער אין אַלע סטרינגס. אין אנדערע ווערטער, מיר נעמען בלויז פּראָסט אותיות פון יעדער שטריקל.

 

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

מיר וועלן ערשטן שאַפֿן אַ אַנס מענגע פון גרייס 26 וואָס האט אַלע ינדעקסיז באַשטימט צו מאַקס ווערט.
דערנאָך מיר וועלן אַריבער די מענגע פון ​​סטרינגס פֿון לינקס צו רעכטס. אין יעדער שריט, מיר מאַכן די ציילן מענגע פֿאַר די קראַנט שטריקל. דערנאָך מיר וועלן פאַרגלייכן די קראַנט באשאפן מענגע מיט אַנס מענגע.
ווייַל מיר זענען אינטערעסירט אין מינימום פון אַלע, אַזוי יעדער אינדעקס פון אַנס מענגע וועט נאָר זיין מאַדאַפייד אויב די ווערט אין קראַנט מענגע איז קלענערער ווי אַנס מענגע ס ווערט אין דעם אינדעקס.
ד"ה אויב ans [i]

נאָך מיר האָבן דורכגעקאָכט אַלע סטרינגס פון דער געגעבן רשימה, מיר וועלן נוצן אונדזער אַנס מענגע צו שאַפֿן די רשימה פון אותיות. אין ענטפֿערן מענגע, די ווערט אין אינדעקס 0 ווייזט ציילן פון כאַראַקטער 'אַ', ווערט אין אינדעקס 1 ווייזט ציילן פון אינדעקס 'b' און אַזוי אויף.
אַזוי, אין דעם וועג, מיר מאַכן אונדזער פּראָדוקציע מענגע פון ​​אותיות מיט די ציילן פון יעדער כאַראַקטער פֿון a ביז z.

ימפּלעמענטאַטיאָן

C ++ פּראָגראַם פֿאַר געפֿינען פּראָסט אותיות לעעטקאָדע סאַלושאַן

#include <iostream>
#include <vector>
using namespace std;
vector<string> commonChars(vector<string>& A) {
        int ans[26];
        int temp[26];
        fill(ans,ans+26,100);
        for(string str:A){
            fill(temp, temp+26,0);
            for(int i=0;i<str.size();i++){
                temp[str[i]-'a']++;
            }
            for(int i=0;i<26;i++){
                ans[i]=min(ans[i],temp[i]);
            }
        }
        vector<string>ansChars;
        for(int i=0;i<26;i++){
            for(int j=0;j<ans[i];j++){
                char ch=((char)(i+'a'));
                string s(1, ch); //convert char ch to string s
                ansChars.push_back(s);
            }
        }
        return ansChars;
    }
int main()
{
    vector<string>A{"bella","label","roller"};
    vector<string>ans = commonChars(A);
    for(string str:ans){
        cout<<str<<" ";
    }
    cout<<endl;
}
e l l

Java פּראָגראַם פֿאַר געפֿינען פּראָסט אותיות לעעטקאָדע סאַלושאַן

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

class Solution
{  
    public static void main(String args[])
    {
        String[]A={"bella","label","roller"};
        List<String>ans=commonChars(A);
        for(String str:ans){
            System.out.print(str+" ");
        }
        System.out.println();
    }
    public static List<String> commonChars(String[] A) {
        int[]ans=new int[26];
        int[]temp=new int[26];
        Arrays.fill(ans,Integer.MAX_VALUE);
        for(String str:A){
            Arrays.fill(temp,0);
            for(int i=0;i<str.length();i++){
                temp[str.charAt(i)-'a']++;
            }
            for(int i=0;i<26;i++){
                ans[i]=Math.min(ans[i],temp[i]);
            }
        }
        List<String>ansChars=new ArrayList<String>();
        for(int i=0;i<ans.length;i++){
            for(int j=0;j<ans[i];j++){
                ansChars.add((char)(i+'a')+"");
            }
        }
        return ansChars;
    }
}
e l l

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

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

אָ (n): וווּ n איז די סומע פון ​​לענג פון אַלע די סטרינגס.

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

אָ (1): צוויי ערייז אַנס און טעמפּ, יעדער פון גרייס 26 איז געניצט. וואָס איז גאָרנישט אָבער אַ קעסיידערדיק גרייס זכּרון. אזוי די פּלאַץ קאַמפּלעקסיטי איז אָ (1).