測試開發面試題解
- 2020 年 1 月 22 日
- 筆記
新書
速遞
吳老的java版《selenium webdriver3 實戰寶典》和python版《selenium Webdriver 3.0 自動化測試框架實戰指南》出版了,程式碼拿來就能用。
文 | 李興
題目描述
給定一個由括弧元素'(', ')','[':,']', '{', '}'組成的字元串,判斷該字元串中的所有類型的括弧是否是閉合的。
判斷條件:
(1)左括弧必須用相同類型的右括弧閉合
(2)左括弧必須以相同的順序閉合
示例:
輸入:() 輸出:true
輸入:()[]{} 輸出:true
輸入:(] 輸出:false
輸入:([)] 輸出:false
輸入:([{}]) 輸出:true
輸入:((())) 輸出:true
輸入:([[()()]{}]){}[] 輸出:true
解題分析一
通過觀察示例中的字元串發現,一個符合括弧閉合要求的字元串有如下特點:
(1)合理的嵌套關係
(2)嵌套的最內層是一對閉合的括弧類型(相鄰兩個元素),如()
首先將字元串string轉換成列表string_list,然後判斷列表string_list當中是否存在相鄰字元為閉合括弧的情況,如果存在就刪除這兩個字元,然後繼續判列表string_list當中是否存在相鄰字元為閉合括弧的情況。直到string_list為空,或者沒有可以刪除的元素為止。
如果string_list能夠刪除為空,為真,否則為假
此題的解法類似於我們玩的消消樂,如果能夠全部消除,則通關
演算法
def isClosedParentheses(string): ''' 判斷一個由括弧組成的字元串是否是閉合的 ''' d= {'(': ')', '[': ']', '{': '}'} string_list = list(string) while string_list: for i in range(len(string_list)-1): # 獲取所有列表的下標 if string_list[i] in d.keys() and d[string_list[i]] == string_list[i +1]:# 找到閉合的括弧 string_list.pop(i) # 先刪除閉合括弧的左邊,然後該下標右邊,下標左移 string_list.pop(i) # 左移完成後,閉合括弧的右邊,左移到該下標繼續刪除 break # 找到閉合括弧後退出本次循環 else: break # for循環完成後退出while循環 #驗證列表是否全部刪除 if string_list: return False else: return True
考點
1、列表元素刪除
2、for…else…語法結構
解題分析二
- 給出的括弧字元串,一定存在一對正確的括弧,如:(),[],{}
- 將這一對有效括弧清除掉,這對括弧外的括弧就成為中間成對出現的括弧,
- 這樣一直清除下去,這個字元串如果清除完畢就是True,否則為False
演算法
def isClosedParentheses(string): ''' 判斷一個由括弧組成的字元串是否是閉合的 ''' while '{}' in s or '()' in s or '[]' in s: s = s.replace('{}', '') s = s.replace('[]', '') s = s.replace('()', '') return s == ''
|
|
---|---|
|