[LC] 1170が最小の文字の周波数によって文字列を比較します

関数を定義してみましょう  f(s) 非空の文字列上  sで最小の文字の頻度を計算し、  sたとえば、  s = "dcce" その後、  f(s) = 2 最小の文字であるため  "c" 、その頻度は2です。

ここで、文字列配列所与  queries と  words、整数配列戻り  answer各々は、  answer[i] そのようなその単語の数であるが  f(queries[i]) 、<  f(W)、ここ  W で言葉です  words

 

例1:

入力:クエリ= [ "CBD"]、言葉= [ "zaaaz"] 
出力:[1] 
説明:最初のクエリに、我々は、FそうF( "CBD")= 1、F( "zaaaz")= 3を有しています( "CBD")<F( "zaaaz")。

クラスソリューション{
     公共 のint [] numSmallerByFrequency(文字列[]クエリ文字列[]語){
         int型 QNUM = queries.length。 
        int型 wNum = words.length。
        INT [] qArr = 新しい int型[QNUM]。
        INT []ウォー= 新しい int型[wNum]。
        以下のためにINT ; I <qArr.length; iが0 = I ++ ){ 
            qArr [I] = getSmallFreq(クエリ[I])。
        } 
        のためのINTが I = 0、I <wArr.length; I ++ ){
            ウォー[I]= getSmallFreq(単語[I])。
        } 
        INT [] RES = 新しい INT [QNUM]。
        以下のためにINT ; I <QNUM; iが0 = I ++ ){
             int型 TMP = 0 INT {:ウォーwFreq)
                 場合(qArr [I] < wFreq){ 
                    TMP + = 1 ; 
                } 
            } 
            RES [I] = TMP。
        } 
        戻りRES。
    } 
    
    プライベート int型getSmallFreq(文字列S){
        INT [] freqArr = 新しい int型 [26 ]。
        チャーC:s.toCharArray()){ 
            freqArr [C - ''] + = 1 ; 
        } 
        ためINT iは= 0; I <freqArr.length; I ++ ){
             場合(freqArr [i]が> 0 ){
                 戻りfreqArrを[I]。
            } 
        } 
        戻り 0 
    } 
}

 

おすすめ

転載: www.cnblogs.com/xuanlu/p/12298061.html