力扣刷題記錄 字串 簡單 859親密字串

2021-09-26 22:48:50 字數 1417 閱讀 1607

給定兩個由小寫字母構成的字串 a 和 b ,只要我們可以通過交換 a 中的兩個字母得到與 b 相等的結果,就返回 true ;否則返回 false 。

輸入: a = 「ab」, b = 「ba」

輸出: true

輸入: a = 「ab」, b = 「ab」

輸出: false

輸入: a = 「aa」, b = 「aa」

輸出: true

輸入: a = 「aaaaaaabc」, b = 「aaaaaaacb」

輸出: true

輸入: a = 「」, b = 「aa」

輸出: false

根據示例總結的規律:

兩個字串長度不等,返回false

兩個字串完全相同:

(1)a中無重複字元,返回false

(2)a中有重複字元,可以交換重複字元,返回true

a和b等長,但部分字元不同,不同的字元對數小於等於2,交換一次即可變為相同,返回true

class

solution

(object)

: def buddystrings

(self, a, b)

:"""

:type a: str

:type b: str

:rtype: bool

"""len_a =

len(a)

len_b =

len(b)

if len_a != len_b:

return false

diff_a =

"" diff_b =

""for i in range(0

,len_a)

:if a[i]

!=b[i]

: diff_a = diff_a + a[i]

diff_b = diff_b + b[i]

# a和b相同

iflen(diff_a)==0

: # a中有重複元素,則可以交換重複元素

iflen(

set(a)

)<

len(a)

:return true

else

:return false

# a和b中不同的對數超過2

elif len

(diff_a)

>2:

return false

# a和b中不同的對數小於等於2

else

: # 交換a中元素與b相同

if diff_a[::

-1]==diff_b:

return true

else

:return false

力扣刷題記錄 字串 簡單 551學生出勤記錄 I

給定乙個字串來代表乙個學生的出勤記錄,這個記錄僅包含以下三個字元 如果乙個學生的出勤記錄中不超過乙個 a 缺勤 並且不超過兩個連續的 l 遲到 那麼這個學生會被獎賞。請需要根據這個學生的出勤記錄判斷他是否會被獎賞。輸入 ppallp 輸出 true 輸入 ppalll 輸出 false class ...

力扣刷題記錄 字串 簡單 20有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 注意空字串可被認為是有效字串。輸入 輸出 true 輸入 輸出 true 輸入 輸出 false 輸入 輸出 false 輸入 輸出 true 參考官方解答,利用棧 class solution object def isvalid self...

力扣刷題記錄 字串 簡單 521最長特殊序列

給定兩個字串,你需要從這兩個字串中找出最長的特殊序列。最長特殊序列定義如下 該序列為某字串獨有的最長子序列 即不能是其他字串的子串行 子串行可以通過刪去字串中的某些字元實現,但不能改變剩餘字元的相對順序。空串行為所有字串的子串行,任何字串為其自身的子串行。輸入為兩個字串,輸出最長特殊序列的長度。如果...