5483. 整理字串
給你乙個由大小寫英文本母組成的字串 s 。
0 <= i <= s.length - 2
s[i] 是小寫字元,但 s[i + 1] 是相同的大寫字元;反之亦然 。
請你將字串整理好,每次你都可以從字串中選出滿足上述條件的 兩個相鄰 字元並刪除,直到字串整理好為止。
請返回整理好的 字串 。題目保證在給出的約束條件下,測試樣例對應的答案是唯一的。
示例 1:
輸入:s = 「leeeetcode」
輸出:「leetcode」
解釋:無論你第一次選的是 i = 1 還是 i = 2,都會使 「leeeetcode」 縮減為 「leetcode」 。
示例 2:
輸入:s = 「abbacc」
輸出:""
解釋:存在多種不同情況,但所有的情況都會導致相同的結果。例如:
「abbacc」 --> 「aacc」 --> 「cc」 --> 「」
「abbacc」 --> 「abba」 --> 「aa」 --> 「」
示例 3:
輸入:s = 「s」
輸出:「s」
1 <= s.length <= 100
s 只包含小寫和大寫英文本母
索引移動到上一位是因為有可能存在abba,當中間bb被刪除之後,游標便道了aa中的a上面,所以每次消除一對字元的時候,游標都要回退一位。
class
solution
:def
makegood
(self, s:
str)
->
str:
# print(ord('a'))
ifnot s:
return
"" i =
0 n =
len(s)
while i < n -1:
ifabs
(ord
(s[i])-
ord(s[i+1]
))==32
:#比較兩個數是否是大小寫關係
s = s[
:i]+ s[i+2:
]#這裡每次都對字串進行了分割,所以不能使用for迴圈
n -=
2#刪除兩個字元,對應總長度也要減2
if i >0:
#游標大於0,且本次刪除了兩個字元,游標回退。
i -=
1else
:#本次不匹配。加一,繼續檢查
i +=
1return s
leetcode 5483 整理字串(C )
給你乙個由大小寫英文本母組成的字串s。乙個整理好的字串中,兩個相鄰字元s i 和s i 1 不會同時滿足下述條件 請你將字串整理好,每次你都可以從字串中選出滿足上述條件的兩個相鄰字元並刪除,直到字串整理好為止。請返回整理好的字串。題目保證在給出的約束條件下,測試樣例對應的答案是唯一的。示例 1 輸入...
Leetcode文章整理
leetcode的題目種模擬較多,感覺應該將自己聯絡過的題目進行分類,這個就是根據自己做過的題目進行劃分,並做一定的總結,會持續更新 sort two pointer 單鏈表 這裡用的很直接的方法就是找到鍊錶的中點,然後將鍊錶分為兩部分,後半截翻轉後兩個鍊錶進行融合。我在想,如果能之間把後面半截放入...
leetcode整理的資料
以下幾個為leetcode解題答案 幾個在github上提供leetcode 1 這個哥們組織了好多活動,在網上很活躍,貌似是清華的學生 tree master 答案 演算法的深入 2 某大牛 3 某二牛 4 北大的乙個學生,這個leetcode非常好 5 浙大小學妹的 6 乙個2007級學生,現在...