今日のトレーニングの1つの質問----4月10日

文字列ハッシュ

P3370[テンプレート]文字列ハッシュ-Luogu

画像-20220410153245336

この質問では、セットを直接使用して重複排除を行い、最後にセットのサイズをカウントします。

タイトルの意味を誤解したかどうかわかりません。自分でハッシュを実装する必要があるようです。これが彼のタイトルの2番目の文の意味かもしれません。文字列は配列にマッピングされ、次にハッシュがマッピングされます。競合を処理できます。

ハッシュの競合に対処するために、一般に、同じハッシュ値を持つすべてのデータを格納するために、競合位置にリンクリストが確立されhashmapます。Javaのクラスもこの方法で実装されますが、データ量が8を超えると、リンクリストを赤黒木に変換する操作。データ量を減らした後、元に戻す場合(正しいかどうかはわかりませんが、バグウェンを読んだときにこのように書かれていました)

package cn.edu.xjtu.daily.April.day_4_10;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

/**
 * https://www.luogu.com.cn/problem/P3370
 */
public class Main {
    
    
    public static void main(String[] args) {
    
    
        Set<String> set = new HashSet<>();
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        for (int i = 0; i < N; i++) {
    
    
            set.add(sc.next());
        }
        System.out.println(set.size());
        
    }
}

おすすめ

転載: blog.csdn.net/qq_46311811/article/details/124079560