859. 亲密字符串(Python)

题目

难度:★★☆☆☆
类型:字符串

给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回
true ;否则返回 false 。

提示
0 <= A.length <= 20000
0 <= 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 = "aaaaaaacb"
输出: 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]

如有疑问或建议,欢迎评论区留言~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,523评论 0 17
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,808评论 0 10
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,402评论 0 2
  • 给定两个由小写字母构成的字符串A和B,只要我们可以通过交换A中的两个字母得到与B相等的结果,就返回true;否则返...
    公子小白123阅读 212评论 0 0
  • 今天晚上我们一起去饭店吃饭,饭店的名字叫沙县小吃,沙县小吃里的饭非常美味,非常好吃,我们吃了鸭腿饭,炒河粉,...
    余跃汐阅读 159评论 0 0