不太聰明的Q仔最近在努力提升python編程水平,他相信勤能補拙,於是周末時間也被他用來做Python練習題。
他熟練的打開今日試題,題目寫著:
某個字符串s僅由'(',')','{','}','[',']' 的任意組合構成,該字符串有效的條件為:1、左括號須用同類型的右括號閉合;2、左括號須以正確的順序閉合。請編寫代碼,輸入一個字符串,並判斷其是否有效。提示:有效的字符串舉例:"()[]{}"、"{[]}";無效的字符串舉例:"([)]"Q仔盯著題目看了半晌,緩緩開始思考:計算字符串長度為奇數就輸出False,否則True?不對不對.那麼計算每種左括號的個數,如果等於右括號的個數就輸出True,否則False?也不是.那麼在前面的基礎上再加限制條件:每種右括號不能在左括號前面,最後一個字符不能是左括號?.這樣也有漏洞!啊啊啊啊!想不出來了!我怎麼這麼笨啊!Q仔氣呼呼的合上電腦,跳進沙發裡炸成河豚。
「嘀個咚」,Q仔一看手機,微信有新消息。點開,是001爬山隊隊長「我不是胖子」發來的:爬山嗎?蓮花山下集合。Q仔心裡沒好氣的說:不去。但是眼下題目也做不出來,新番也懶得看,還是出去轉轉吧.Q仔這就來到了蓮花山門口。
此時的蓮花山正在辦花展,花農把一盆盆黃花、紅花、紫花三三倆倆的擺成一排,擺完以後審視了一番,或許是覺得中間那兩盆挨在一起的紅花不協調,就把它們挪出來放到一旁,然後將那一排左右兩邊的花盆往中間挪了挪,填補空位,完了繼續審視一番,又把靠左邊的挨在一起的兩盆紫花挪出來,再把原排列挪緊湊些填了空缺。至此,花農終於滿意的點點頭。Q仔看到這裡,忽然呆住,頭頂的燈泡「叮」的一下亮了起來。他一拍巴掌:「對呀!我怎麼沒想到啊!可以用replace函數把字符串裡面的那些成雙成對的左右括號替換成空值啊!」想到這裡,他頭也不回的就跑回家。(隊長「我不是胖子」內心os:這人咋回事。。。怎麼剛來就走
replace是python中比較常見而且好用的函數,它的語法為:
str.replace(old,new,max)舉一些簡單的應用小慄子:
1、將如下字符串按逗號分行展示
str="abcd,efg,hijk,lmn" newStr=str.replace(",","\n") print(newStr)
abcdefghijklmn2、上一個字符串分三行展示
newStr=str.replace(",","\n",2) print(newStr)
abcdefghijk,lmn3、上一個字符串的a和g換成大寫的A和G
newStr=str.replace("a","A").replace("g","G")print(newStr)
Abcd,efG,hijk,lmn衝回家的Q仔顧不得氣喘籲籲,打開電腦,噼裡啪啦敲下一行行代碼,點擊運行,成功!(此處省略debug100次的劇情)Q仔看著自己的答案,非常開心。
def isValid(s): for i in range(len(s)//2): s=s.replace('()','').replace('[]','').replace('{}','') return len(s)==0 s="{[})(]"isValid(s)
False「嘀個咚」,微信又有新消息,隊長「我不是胖子」:你怎麼不爬山又回家了呀?於是Q仔把自己遇到的這個python題目跟隊長說了一下,「我不是胖子」:嗐,這個簡單呀!用replace函數就可以搞定的嘛!
.Q仔木了,想不到自己千辛萬苦想出的解題思路,隊長竟然脫口而出!
Q仔:隊長,你怎麼這麼厲害呀!教教我唄!
「我不是胖子」:來爬山我就教你。
Q仔:好咧,這就來!
上面這個小故事告訴我們,當你在學習或者工作中遇到解不開的題時,不妨放下手頭的事情,跟001爬山隊隊長一起爬爬山,或許你就有了新的解題思路!現在入隊還有超值乾貨大禮包贈送!有意向的小夥伴請在下方留言哈!
Come on!Join us!
註:本題原型來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/valid-parentheses