文字列ハッシュ
この質問では、セットを直接使用して重複排除を行い、最後にセットのサイズをカウントします。
タイトルの意味を誤解したかどうかわかりません。自分でハッシュを実装する必要があるようです。これが彼のタイトルの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());
}
}