def substitua(s, velha, nova): ''' (str, str) -> str Recebe três strings: s, velha, e nova. Retorna uma string t que é obtida percorrendo-se a string s e substituindo-se cada ocorrência da string velha pela string nova, a medida que velha é encontrada em s. Exemplos: >>> substitua("Catarina viu uma tarantula em cima da tartaruga", "a", "-|.") 'C-|.t-|.rin-|. viu um-|. t-|.r-|.ntul-|. em cim-|. d-|. t-|.rt-|.rug-|.' >>> substitua("Catarina viu uma tarantula em cima da tartaruga", "tar", "") 'Caina viu uma antula em cima da uga' >>> substitua("comer correr conter c", "er c", ".") 'com.orr.ont.' >>> substitua("nanananan", "nan", "x") 'xaxan' ''' t = "" nV = len(velha) if nV == 0: return s # nada a fazer n = len(s) i = 0 while i < n: j = 0 while j < nV and i+j < n and velha[j] == s[i+j]: j += 1 if j == nV: t += nova i += nV else: t += s[i] i += 1 return t
def substitua(s, velha, nova): ''' (str, str) -> str Recebe três strings: s, velha, e nova. Retorna uma string t que é obtida percorrendo-se a string s e substituindo-se cada ocorrência da string velha pela string nova, a medida que velha é encontrada em s. Exemplos: >>> substitua("Catarina viu uma tarantula em cima da tartaruga", "a", "-|.") 'C-|.t-|.rin-|. viu um-|. t-|.r-|.ntul-|. em cim-|. d-|. t-|.rt-|.rug-|.' >>> substitua("Catarina viu uma tarantula em cima da tartaruga", "tar", "") 'Caina viu uma antula em cima da uga' >>> substitua("comer correr conter c", "er c", ".") 'com.orr.ont.' >>> substitua("nanananan", "nan", "x") 'xaxan' ''' nV = len(velha) if nV == 0: return s # nada a fazer t = "" ini = 0 # prefixo de s[ini:] será comparado com velha j = 0 # j=0,1,...,nV percorre string velha for i in range(0, len(s), 1): if s[i] == velha[j]: j += 1 if j == nV: t += nova j = 0 ini = i + 1 else: t += s[ini:i+1] j = 0 ini = i + 1 return t + s[ini:]
def substitua(s, velha, nova): ''' (str, str) -> str Recebe três strings: s, velha, e nova. Retorna uma string t que é obtida percorrendo-se a string s e substituindo-se cada ocorrência da string velha pela string nova, a medida que velha é encontrada em s. Exemplos: >>> substitua("Catarina viu uma tarantula em cima da tartaruga", "a", "-|.") 'C-|.t-|.rin-|. viu um-|. t-|.r-|.ntul-|. em cim-|. d-|. t-|.rt-|.rug-|.' >>> substitua("Catarina viu uma tarantula em cima da tartaruga", "tar", "") 'Caina viu uma antula em cima da uga' >>> substitua("comer correr conter c", "er c", ".") 'com.orr.ont.' >>> substitua("nanananan", "nan", "x") 'xaxan' ''' t = "" nV = len(velha) n = len(s) i = 0 # prefixo de s[i:] será comparado com a string velha while i < n: if s[i:i+nV] == velha: t += nova i += nV else: t += s[i] i += 1 return t