Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/07/2003, 13:12
Avatar de AlZuwaga
AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
encontrar duplicados en dos ARRAYs

Buenas, gente.

Estoy haciendo un sistema de "favoritos" en donde se guardan ID's de registros separados por comas en un campo memo (el contenido es similar a "BUE001, BUE002, CAT003, SFE156, ..., ETC000")

Los registros, los ID's separados por coma, son como máximo 2169 ya que corresponden a la totalidad de los municipios que hay en argentina y cada ID tiene un largo de 6 caracteres. Lo que da un máximo posible de 15182 caracteres (2169 * 6 + 2168 comas)

Ahora bien... El usuario puede manipular el contenido agregando más ID's o eliminando otros. Claro está que puede confundirse y agregar uno o más ID dos o más veces a este string separado por comas y el sistema se lo debería impedir. Un error grave que puede cometer es agregar a un nuevo grupo todos los registros (2169) y luego agregarlos nuevamente.

En un comienzo se me había ocurrido hacer un split (por la coma) del contenido actual y un split del contenido a agregar y comparar 1 a 1 si está duplicado. Suponiendo que el contenido actual sea de 2000 registros e intente agregar 1 más, serían 2000 comparaciones y realmente no me pareció mucho... pero viendo que puede pasar una situación como la arriba marcada en azul, serían 2.169 * 2.169 = 4.704.561 comparaciones (situación totalmente absurda en ese hipotético caso... pero me gusta ser extremista =)... y ahora SI me resulta como muuuucho

La pregunta, luego de planteado y ejemplificado el tema de la mejor manera que pude, sería la siguiente:

Cuál sería la forma más efectiva (o menos "consume recursos") de buscar una subcadena dentro de otra, verificar que la primera no exista en la segunda y finalmente anexarla?

Por ahora no pretendo nada más que teoría... el código lo haré en base a sus opiniones y si no me sale les pido ayuda

Saludos y gracias por leer todo este palabrerío insoportable

Última edición por AlZuwaga; 31/07/2003 a las 13:24