logo

Program w Pythonie do znajdowania różnicy między dwoma ciągami znaków

W tym samouczku napiszemy program w języku Python, aby znaleźć różnicę między dwoma podanymi ciągami znaków. Ten problem można zadać na rozmowie kwalifikacyjnej. Rozumiemy sformułowanie problemu, a następnie przystąpimy do rozwiązania.

Oświadczenie o problemie —

Podane są dwa ciągi S I T. Łańcuch t jest generowany przez losowe przetasowanie ciągu s, a następnie dodawany jest jeszcze jeden znak w dowolnej losowej pozycji. Musimy napisać program w Pythonie, który zwróci dodaną literę T.

Przykład -

 Input: s = 'zxyc', t = 'zxyce' Output: 'e' Explanation: 'e' is the letter that was added. 

Przykład -

 Input: s = 'uvw', t = 'wyu' Output: 'y' Explanation: 'e' is the letter that was added. 

Ograniczenia:

Należy przestrzegać następujących ograniczeń:

  • 0<= s.length <='1000</li'>
  • t.długość == s.długość + 1
  • s i t składają się z małych liter angielskich.

Program w Pythonie

Rozumiemy następujący program w języku Python.

Przykład -

 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 = &apos;zxyc&apos; t = &apos;zxyce&apos; print(obj.findTheDifference(s, t) 

Wyjście:

 &apos;e&apos; 

Wyjaśnienie -

W powyższym kodzie zdefiniowaliśmy funkcję findThedifference(), która przyjmuje dwa ciągi znaków jako argumenty. Użyliśmy rozumienia listy, aby przekonwertować ciągi na listę. Teraz iterujemy ls_s liście, wybierz pojedynczy element i usuń go do drugiej listy ls_t. Jeśli z drugiego elementu usunięto wszystkie elementy, oznacza to, że oba podane ciągi znaków są takie same, w przeciwnym razie zwrócony zostanie pierwszy element drugiej listy.

Rozwiązanie - 2

Zobaczmy inne rozwiązanie problemu.

 class Solution: def findTheDifference(self, s: str, t: str) -&gt; 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 = &apos;zxyc&apos; t = &apos;zxyce&apos; print(obj.findTheDifference(s, t) 

Wyjście:

ciąg int
 e 

Wyjaśnienie -

W tym samouczku użyliśmy posortowane() metoda, która konwertuje ciąg znaków na listę znaków w posortowany sposób. Stworzyliśmy dwie listy ciągów i dodaliśmy dodatkowy element jako 0, aby długość była równa; w przeciwnym razie indeks listy będzie poza dopuszczalnym zakresem. Teraz wykonaliśmy iterację t_list i sprawdziliśmy, czy s_lista element nie jest równy t_list; jeśli warunek jest spełniony, zwraca ten element.