Red de conocimiento informático - Problemas con los teléfonos móviles - vb filtrar valores duplicados

vb filtrar valores duplicados

Te doy dos fragmentos de código:

1. El código del segundo piso (se han realizado algunas mejoras, tengo sugerencias para mejorar)

Private Sub Command4_Click()

Dim a () Como cadena, b() Como cadena, i Como larga, j Como larga, c Como larga, l Como larga, f Como booleana

a() = Split(Text1 .Texto, vbCrLf)

l = UBound(a())

2.Texto, vbCrLf)

l = UBound(a())

ReDim b(l) 'Primero preestablece b al valor máximo, porque múltiples ReDim Preserves afectarán la velocidad.

Para i = 0 To l

Para j = 0 To c - 1 'Encuentre a(i) a partir de b, no a(i). Porque b tiene menos elementos y a tiene más elementos. Hay menos consultas para encontrar en b. (En el ejemplo específico, encontrar a requiere 32 ciclos y comenzar con b requiere 30 ciclos:

f = a(i) = b(j)

Si f, entonces salga por

Siguiente

Si no es f entonces

b(c) = a(i)

c = c + 1

End If

Next

ReDim Preserve b(c - 1) 'Elija el final y recorte la matriz a la longitud adecuada de una sola vez. hágalo con demasiada frecuencia, de lo contrario ralentizará el programa

Text1.Text = Join(b, vbCrLf) 'La salida en realidad tiene una función Join más conveniente. End. Sub

2, un método más peculiar, siempre que no pueda haber '#' en la cadena

Private Sub Command3_Click()

Dim a( ) Como cadena, b Como cadena, i Tan largo, l Tan largo

a() = Split(Text1.Text, vbCrLf)

l = UBound(a())

b = "#" & a(0) & "#"

Para i = 1 a l

Si no CBool(InStr(b, "#" & a ( i) & "#")) Entonces

b = b & vbCrLf & "#" & a(i) & "#"

Finalizar si

Siguiente

Text1.Text = Reemplazar(b, "#", "")

End Sub

Nota final: El código anterior es el más fácil de Entiendo el algoritmo uno, pero no es eficiente. Debe recorrer la matriz repetidamente para encontrarlo. Por lo tanto, el código anterior solo es adecuado para escribir tareas o hacer un pequeño experimento temporalmente. Una solución más rápida es usar un árbol binario o un multi. -tree, pero el código es demasiado complejo para escribir un conjunto especializado para ti. Si eres estudiante de informática, deberías aprenderlo.