2019最新Python学习教程:LeetCode - 亲密字符串

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

复制代码

分析

1. A不等于B时:

I. 长度必须保持一致

II. 组成元素保持一致

III. 两者之间的差异值必须为2(ab、ba)

这里利用正则表达式逐一查询B中相同位置的元素是否与A相同,返回一个由True、False组成的列表,False表示相同位置元素不一致,即有一个差异值,这里只要保证False数量为2即可

2. A等于B时:

I. 不为空

II. 字符串内耽搁元素重复数量至少为2 (aa、aba、abab)

这里先将A去重之后再查询其中的元素在初始字符串中出现的次数,返回由次数构成的列表,只要列表元素最大值大于等于2即可

代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
@author: maya
@software: Pycharm
@file: intimateStrings.py
@time: 2019/7/24 8:31
@desc:
'''
'''
Title:
 给定两个由小写字母构成的字符串A和B,只要我们可以通过交换A中的两个字母得到与B相等的结果,就返回true;否则返回false。
Input:
 A = "ab", B = "ba"
 
Output:
 true
From: LeetCode
'''
import re
class Solution(object):
 def buddyStrings(self, A, B):
 """
 :type A: str
 :type B: str
 :rtype: bool
 """
 equal_result = [True if re.search(data, B[A.index(data)]) else False for data in A]
 num_result = [len(re.findall(data, A)) for data in list(set(A))]
 return True if (A != B and (len(A) == len(B)) and (set(A) == set(B) and equal_result.count(False) == 2)) \
 or (A == B != "" and max(num_result) >= 2) else False
复制代码

更多的Python学习教程会继续为大家分享!


转载于:https://juejin.im/post/5d42a259f265da03d727fa0e

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值