您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何理解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中LeetCode的親密字符串就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。