859.親密文字列(Python)

842 ワード

タイトル
難易度:★☆☆☆タイプ:文字列
小文字からなる2つの文字列AとBを与え、Aの2つの文字を交換することでBと等しい結果を得ることができればtrueを返す.そうでなければfalseを返します.
ヒント0<=A.length<=200000<=B.length<=20000 AおよびBは小文字のみで構成されます.

例1入力:A=“ab”,B=“ba”出力:true
例2入力:A=“ab”,B=“ab”出力:false
例3入力:A=“aa”,B=“aa”出力:true
例4入力:A=「aaaaaaabc」、B=「aaaaaacb」出力:true
例5入力:A=“”,B=“aa”出力:false
に答える
ここでは、コメントの解法を参照します.
class Solution(object):
    def buddyStrings(self, A, B):

        #       false
        if len(A) != len(B): return False

        #         ,       ,       
        if A == B and len(set(A)) < len(A): return True

        #    zip       ,        
        dif = [(a, b) for a, b in zip(A, B) if a != b]

        #      2,    ,  (a,b) (b,a)
        return len(dif) == 2 and dif[0] == dif[1][::-1]

質問やアドバイスがあれば、コメントエリアへようこそ~