Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-06-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Algoritmo que compara cadenas de texto

Saludos de nuevo amigos, llevo horas buscando un hilo antiguo y no lo encuentro ojalá ustedes puedan orientarme para llegar a él, lo que pasa es que ni siquiera me acuerdo de como se llama el algoritmo, pero no es el común para comparar cadenas de texto.

La cosa es así alguien alguna vez comentó que quería o tenía el un algoritmo que decía cuantas modificaciones había que hacer en una cadena de texto para convertirla en otra, por ejemplo:

Código Delphi [-]
var
Cambios: integer;
Cadena1, Cadena2: string;

Cadena1:= 'calabaza'
Cadena2:= 'calabozo'

Cambios:= Función(Cadena1, cadena2);  // Cambios es igual a 2, porque solo basta hacer dos modificaciones para que sean la misma.

Saludos y gracias de antemano.
__________________
Herr Heins Faust
Responder Con Cita
  #2  
Antiguo 11-06-2010
cecam cecam is offline
Miembro
 
Registrado: may 2006
Ubicación: Girona
Posts: 47
Poder: 0
cecam Va por buen camino
Hoooola!!

Si no me equivoco se llama Distancia_de_Levenshtein
http://es.wikipedia.org/wiki/Distancia_de_Levenshtein

Código:
function levenshtein(Str1, Str2: String): Integer;
var
  d : array of array of Integer;
  Len1, Len2 : Integer;
  i,j,cost:Integer;
begin
  Len1:=Length(Str1);
  Len2:=Length(Str2);
  SetLength(d,Len1+1);
  for i := Low(d) to High(d) do
      SetLength(d[i],Len2+1);

  for i := 0 to Len1 do
      d[i,0]:=i;

  for j := 0 to Len2 do
      d[0,j]:=j;

  for i:= 1 to Len1 do
    for j:= 1 to Len2 do begin
        if   Str1[i]=Str2[j]
        then cost:=0
        else cost:=1;
        d[i,j]:= Min(d[i-1, j] + 1,     // deletion,
                     Min(d[i, j-1] + 1, // insertion
                         d[i-1, j-1] + cost // substitution
                        )
                    );
    end;
  Result:=d[Len1,Len2];
end;
Saludos!!
Responder Con Cita
  #3  
Antiguo 11-06-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Muchísimas gracias!!!

Efectivamente es esto lo que estoy buscando... ya haciendo una búsqueda en los foros del club he encontrado algunos hilos ya antiguos...

De nuevo muchas gracias.
__________________
Herr Heins Faust
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Manejo de cadenas de texto. mcasso Varios 3 18-03-2010 07:23:24
Comparar dos cadenas de texto GerTorresM Varios 6 09-01-2010 14:27:54
Comparar dos cadenas de texto creus Varios 5 06-03-2009 00:22:13
Algoritmo para comparacion de cadenas danilo_candales Varios 8 17-11-2007 17:23:14
AYUDA! no puedo terminar un algoritmo de resalto de texto en un RichEdit! Black_Ocean Varios 2 05-06-2007 10:54:00


La franja horaria es GMT +2. Ahora son las 18:40:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi