LeetCode简单题之删除字符使字符串变好
題目
一個(gè)字符串如果沒(méi)有 三個(gè)連續(xù) 相同字符,那么它就是一個(gè) 好字符串 。
給你一個(gè)字符串 s ,請(qǐng)你從 s 刪除 最少 的字符,使它變成一個(gè) 好字符串 。
請(qǐng)你返回刪除后的字符串。題目數(shù)據(jù)保證答案總是 唯一的 。
示例 1:
輸入:s = “l(fā)eeetcode”
輸出:“l(fā)eetcode”
解釋:
從第一組 ‘e’ 里面刪除一個(gè) ‘e’ ,得到 “l(fā)eetcode” 。
沒(méi)有連續(xù)三個(gè)相同字符,所以返回 “l(fā)eetcode” 。
示例 2:
輸入:s = “aaabaaaa”
輸出:“aabaa”
解釋:
從第一組 ‘a(chǎn)’ 里面刪除一個(gè) ‘a(chǎn)’ ,得到 “aabaaaa” 。
從第二組 ‘a(chǎn)’ 里面刪除兩個(gè) ‘a(chǎn)’ ,得到 “aabaa” 。
沒(méi)有連續(xù)三個(gè)相同字符,所以返回 “aabaa” 。
示例 3:
輸入:s = “aab”
輸出:“aab”
解釋:沒(méi)有連續(xù)三個(gè)相同字符,所以返回 “aab” 。
提示:
1 <= s.length <= 10^5
s 只包含小寫英文字母。
來(lái)源:力扣(LeetCode)
解題思路
??這個(gè)題可以直接模擬來(lái)進(jìn)行,但是會(huì)比較麻煩,處理刪除將會(huì)導(dǎo)致index發(fā)生變化,從而可能需要預(yù)留空白進(jìn)行邏輯刪除或者考慮刪除后從新組合的情況,因此,我們從另外一個(gè)角度來(lái)考慮問(wèn)題,即重新來(lái)組成一個(gè)符合條件的字符串用給定順序的元素。
class Solution:def makeFancyString(self, s: str) -> str:if len(s)<3:return stemp=s[0]+s[1]for i in range(2,len(s)):if s[i]!=temp[-1] or s[i]!=temp[-2]: #如果當(dāng)前元素和它前面的兩個(gè)元素中全部相同則不需要添加入重新構(gòu)成的字符串。temp+=s[i]return temp
總結(jié)
以上是生活随笔為你收集整理的LeetCode简单题之删除字符使字符串变好的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeetCode简单题之找出两数组的不同
- 下一篇: LeetCode简单题之二进制表示中质数