leetcode 5483 整理字串

2021-10-08 23:43:28 字數 1299 閱讀 6304

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級學生,現在...