• 859. 亲密字符串


     

    思路:
    1、若A和B都为空,返回False;
    2、若两串长度不同,返回False;
    3、若A和B相等, 只要有重复元素,返回True;
    4、若两串长度相同但不相等,统计不同字符的个数num,并记录其位置,若num>2,返回False;
    5、将A中不同的两个字符交换位置,与B相等,返回True。
     1 class Solution(object):
     2     def buddyStrings(self, A, B):
     3         """
     4         :type A: str
     5         :type B: str
     6         :rtype: bool
     7         """
     8         # A和B都为空,返回False
     9         if A == B == "":
    10             return False
    11         # 两串长度不同,返回False;
    12         if len(A) != len(B):
    13             return False
    14         # 若字符串相等, 只要有重复元素,返回True
    15         if A == B:
    16             for i, ch in enumerate(A):
    17                 if A.count(ch) != 1:
    18                     return True
    19                 else:
    20                     return False
    21         num = 0
    22         dif = [0] * len(A)
    23         for i, ch in enumerate(A):
    24             if ch != B[i]:
    25                 dif[num] = i
    26                 num += 1
    27         # 有两个以上的不同字符,不满足
    28         if num > 2:
    29             return False
    30         else:
    31             lista = list(A)
    32             lista[dif[0]], lista[dif[1]] = lista[dif[1]], lista[dif[0]]
    33             A = "".join(lista)
    34             if A == B:
    35                 return True
    36             else:
    37                 return False
    38 
    39 if __name__ == '__main__':
    40     solution = Solution()
    41     print(solution.buddyStrings("abcd", "abcd"))
     
  • 相关阅读:
    位军营 20190919-4 测试,结对要求
    位军营 20190919-5 代码规范,结对要求
    国内源
    hexo安装-nodejs
    python调用chrome打开指定网址
    生成证书,用于签名Android应用
    cygwin64-安装包管理工具
    Android-删除指定包名的App
    pyqt5加载网页的简单使用
    打包python到exe
  • 原文地址:https://www.cnblogs.com/panweiwei/p/12697898.html
Copyright © 2020-2023  润新知