日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

LeetCode简单题之仅执行一次字符串交换能否使两个字符串相等

發布時間:2023/11/28 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode简单题之仅执行一次字符串交换能否使两个字符串相等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

給你長度相等的兩個字符串 s1 和 s2 。一次 字符串交換 操作的步驟如下:選出某個字符串中的兩個下標(不必不同),并交換這兩個下標所對應的字符。
如果對 其中一個字符串 執行 最多一次字符串交換 就可以使兩個字符串相等,返回 true ;否則,返回 false 。
示例 1:
輸入:s1 = “bank”, s2 = “kanb”
輸出:true
解釋:例如,交換 s2 中的第一個和最后一個字符可以得到 “bank”
示例 2:
輸入:s1 = “attack”, s2 = “defend”
輸出:false
解釋:一次字符串交換無法使兩個字符串相等
示例 3:
輸入:s1 = “kelb”, s2 = “kelb”
輸出:true
解釋:兩個字符串已經相等,所以不需要進行字符串交換
示例 4:
輸入:s1 = “abcd”, s2 = “dcba”
輸出:false
提示:
1 <= s1.length, s2.length <= 100
s1.length == s2.length
s1 和 s2 僅由小寫英文字母組成
來源:力扣(LeetCode)

解題思路

??同時遍歷兩個字符串,標記不一樣的字符下標,如果不一樣的字符對超過了兩對那么題目一定不成立,如果不一樣的字符對只有一對也不會成立,如果沒有不一樣的字符,題目成立。如果恰恰只有兩對不一樣的字符對,那么判斷交換后是否一樣即可。

class Solution:def areAlmostEqual(self, s1: str, s2: str) -> bool:temp=[]for i in range(len(s1)):if s1[i]!=s2[i]:temp.append(i)if len(temp)==0: #如果沒有不一樣的字符return Trueelif len(temp)%2 or len(temp)>2: #如果僅有一對不同字符對或者超過兩對return Falsereturn True if s1[temp[0]]==s2[temp[1]] and   s1[temp[1]]==s2[temp[0]] else False  #判斷交換后是否一樣

總結

以上是生活随笔為你收集整理的LeetCode简单题之仅执行一次字符串交换能否使两个字符串相等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。