En aquest tutorial, escriurem un programa Python per trobar la diferència entre les dues cadenes donades. Aquest problema es pot preguntar a l'entrevista. Entenem l'enunciat del problema i després ens aproparem a la solució.
Plantejament del problema -
Hi ha dues cadenes donades s i t. La cadena t es genera barrejant aleatòriament la cadena s i després s'afegeix un caràcter més en qualsevol posició aleatòria. Hem d'escriure un programa Python que retorni la lletra a la qual s'ha afegit t.
Exemple -
Input: s = 'zxyc', t = 'zxyce' Output: 'e' Explanation: 'e' is the letter that was added.
Exemple -
Input: s = 'uvw', t = 'wyu' Output: 'y' Explanation: 'e' is the letter that was added.
Restriccions:
S'han de seguir les següents limitacions:
- 0<= s.length <='1000</li'>
- t.longitud == s.longitud + 1
- s i t consisteixen en lletres angleses minúscules. =>
Programa Python
Entenem el següent programa Python.
Exemple -
dormir per javascript
class Solution(object): def findTheDifference(self, s, t): ls_s = [s[i] for i in range(len(s))] ls_t = [t[i] for i in range(len(t))] for elem in ls_s: ls_t.remove(elem) return(ls_t[0]) obj = Solution() s = 'zxyc' t = 'zxyce' print(obj.findTheDifference(s, t)
Sortida:
powershell vs bash
'e'
Explicació -
Al codi anterior, hem definit la funció findThedifference() que pren dues cadenes com a arguments. Hem utilitzat la comprensió de llista per convertir les cadenes en llista. Ara, repetim ls_s llista, trieu un sol element i elimineu aquest element a la segona llista ls_t. Si s'elimina tot l'element del segon element, vol dir que les dues cadenes donades són iguals, en cas contrari retorna el primer element de la segona llista.
Solució - 2
Vegem una altra solució del problema.
class Solution: def findTheDifference(self, s: str, t: str) -> str: #sort both the strings s_list = sorted(s) t_list = sorted(t) s_list.append(0) #to make the length equal else we will get list index out of bounds (1 extra char in string2) for i in range(len(t_list)): if s_list[i] != t_list[i]: #if character at i not same for both the strings, we get our answer return t_list[i] obj = Solution() s = 'zxyc' t = 'zxyce' print(obj.findTheDifference(s, t)
Sortida:
e
Explicació -
En aquest tutorial, hem utilitzat el ordenat () mètode, que converteix la cadena en una llista de caràcters de manera ordenada. Hem creat les dues llistes de cadenes i hem afegit un element addicional com a 0 per fer que la longitud sigui igual; en cas contrari, aconseguirem l'índex de la llista fora dels límits. Ara hem repetit la t_list i hem comprovat si s_lista element no és igual a t_list; si la condició coincideix, retorna aquest element.