hash de cadena
P3370 [Plantilla] Cadena Hash - Luogu
Esta pregunta usa directamente el conjunto para deduplicar y, finalmente, cuenta el tamaño del conjunto.
No sé si entendí mal el significado del título. Siento que necesito implementar un hash yo mismo. Tal vez este sea el significado de la segunda oración de su título. La cadena se asigna a una matriz, y luego el hash el conflicto puede ser manejado.
Para tratar los conflictos de hash, generalmente, se establece una lista enlazada en la posición de conflicto para almacenar todos los datos con el mismo valor de hash. La
hashmap
clase en Java también se implementa de esta manera, pero después de que la cantidad de datos supera los 8, hay un operación para convertir la lista enlazada en un árbol rojo-negro. Cuando se reduzca la cantidad de datos, se volverá a convertir (no sé si es correcto o no, estaba escrito así cuando leí el Baguwen)
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());
}
}