elcocodrilotito

6.5.6

Mar 22nd, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.90 KB | None | 0 0
  1. #Daniel Bedialauneta
  2. #Devuelve posición de primera aparición de la cadena s2 en la cadena s1
  3. def find(s2,s1): #len(s2)=m y len(s1)=n
  4.     n=len(s1)
  5.     m=len(s2)
  6.     #Hasta aquí 1
  7.     for i in range(n): #Coste (Suma:k=1 --> i+1)(m), donde i es la posición, por lo que i+1 es la cantidad de repeticiones
  8.         if s1[i:i+m]==s2: #Coste m, porque tiene que comparar una cadena de m caracteres
  9.             return i
  10.     return None #delta(i+1=n)
  11.  
  12. """
  13. m=longitud de s2
  14. n=longitud de s1
  15. i=posición
  16. i+1=cantidad de repeticiones del for
  17. t(n)=1+(Suma:k=1 --> i+1)(m)+delta(i+1=n)= 1 + (i+1)*m + delta(i+1=n)
  18.  
  19. Mejor caso: la cadena s2 aparece en i=0, es decir, i+1=1. Por tanto, delta(i+1=n)=0
  20. t(n) = 1 + m + delta(i+1=n) = m+1
  21. Es decir, t(n) está en O(m)
  22.  
  23. Peor caso: la cedena s2 no aparece, es decir, i+1=n. Por tanto, delta(i+1=n)=1
  24. t(n) = 1 + n*m + 1 = n*m + 2
  25. Es decir, t(n) está en O(n*m)
  26. """
Add Comment
Please, Sign In to add comment