このチュートリアルでは、指定された 2 つの文字列の違いを見つける Python プログラムを作成します。この問題は面接で聞かれることがあります。問題文を理解してから、解決策にアプローチしてみましょう。
問題文 -
指定された文字列は 2 つあります s そして t. 文字列 t は、文字列 s をランダムにシャッフルして生成され、任意の位置にもう 1 文字追加されます。に追加された文字を返す Python プログラムを作成する必要があります。 t.
例 -
無限ループ
Input: s = 'zxyc', t = 'zxyce' Output: 'e' Explanation: 'e' is the letter that was added.
例 -
Input: s = 'uvw', t = 'wyu' Output: 'y' Explanation: 'e' is the letter that was added.
制約:
次の制約に従う必要があります。
- 0<= s.length <='1000</li'>
- t.length == s.length + 1
- s と t は英小文字で構成されます。 =>
Python プログラム
次の Python プログラムを理解しましょう。
例 -
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)
出力:
'e'
説明 -
Javaでのintからstringへの変換
上記のコードでは、2 つの文字列を引数として受け取る findThedifference() 関数を定義しました。リスト内包表記を使用して文字列をリストに変換しました。さて、繰り返します ls_s リストから 1 つの要素を選択し、その要素を 2 番目のリストに削除します ls_t。 2 番目の要素からすべての要素が削除された場合は、指定された両方の文字列が同じであることを意味し、そうでない場合は 2 番目のリストの最初の要素を返します。
解決策 - 2
問題の別の解決策を見てみましょう。
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)
出力:
e
説明 -
Javaランダム数学ランダム
このチュートリアルでは、 ソート済み() メソッド。文字列をソートされた方法で文字のリストに変換します。文字列の 2 つのリストを作成し、長さを等しくするために 0 として追加の要素を追加しました。そうしないと、リストのインデックスが範囲外になってしまいます。ここで、t_list を反復処理して、 s_list 要素が t_list と等しくありません。条件が一致すると、その要素が返されます。