目錄
題目描述
解題思路一
演算法過程:
**示例:
解題思路二
演算法過程:
**示例:
解題思路三
演算法過程:
**示例:
給定乙個由括號元素'(', ')','[':,']', ''組成的字串,判斷該字串中的所有型別的括號是否是閉合的。
判斷條件:
左括號必須用相同型別的右括號閉合
左括號必須以相同的順序閉合
示例:
輸入:() 輸出:true
輸入:(){} 輸出:true
輸入:(] 輸出:false
輸入:([)] 輸出:false
輸入:([{}]) 輸出:true
輸入:((()))輸出:true
輸入:([[()()]{}]){} 輸出:true
基於下標重複遍歷的方式,找到一對閉合的括號就刪除,從頭開始遍歷,直到原字串為空或者不再有閉合的括號為止。
將傳入的字串引數string轉換成列表string_list,這樣可以進行刪除操作;
按下標遍歷列表string_list,判斷當前索引和下乙個索引中的元素是否為一對閉合的括號(也就是(),或者{}),如果有就刪除這對閉合的括號,退出此次迴圈,從頭重新開始遍歷;
重複步驟2,直到列表string_list為空,或者遍歷完列表string_list後沒有閉合的括號為止;
判斷列表string_list,如果為空,則返回true,否則返回false。
此解法類似於我們玩的消消樂,如果能夠全部消除,則通關
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) # 先刪除閉合的左括號,刪除完成後索引i的元素即為右括號
string_list.pop(i) # 再刪除閉合的右括號
break # 找到閉合括號後退出本次迴圈
else:
break # for迴圈完成後退出while迴圈
# 驗證列表是否全部刪除
if string_list:
return false
else:
return true
和思路一類似,也是成對的刪除閉合的括號,但是刪除的方式採用的是字串的replace方法,**更簡潔。
給出的括號字串,一定存在一對正確的括號,如:(),,{};
將這一對有效括號用空字元替換掉,這對括號外的括號就成為中間成對出現的括號;
重複步驟2一直替換下去;
全部替換後,判斷字串如果為空就返回true,否則返回false
def isclosedparentheses(s):
'''判斷乙個由括號組成的字串是否是閉合的
'''while '{}' in s or '()' in s or '' in s:
s = s.replace('{}', '')
s = s.replace('', '')
s = s.replace('()', '')
return s == ''
基於棧的思想實現,如果是左括號比如「(」,」[「或者」「並且和棧中最上面的元素是一對的話就出棧,遍歷完成後棧為空就返回true,否則返回false
定義乙個字典儲存括號的對映關係;
遍歷傳入的字串s;如果是字典的某乙個key就將其新增到列表symbol_list最後;如果是和列表symbol_list中最後乙個括號匹配的右括號的話就刪除symbol_list列表中最後乙個元素;否則的話就直接返回false;
全部遍歷完成後,判斷列表symbol_list,如果為空就返回true,否則返回false
def isclosedparentheses(s):
if len(s)>0 and len(s)%2 !=0:return false
symbol_list =
symbol_dict = ','[':']'}#用字典儲存括號的對映關係
for i in s:#遍歷給定的字串
if i in symbol_dict:#如果是字典的某乙個key就將其新增到列表symbol_list中
#如果是和列表symbol_list中最後乙個括號匹配的右括號的話就出棧
elif i in symbol_dict.values() and i == symbol_dict[symbol_list[-1]]:
symbol_list.pop()
#既不是左括號,也不和列表symbol_list中最後乙個括號匹配的話直接返回false
else:
return false
#print(symbol_list)
# 列表symbol_list為空說明是閉合的返回true,否則返回false
return symbol_list ==
測試開發面試題
4分 3 弱網測試時應該關注的情形有 4分 4 安卓系統架構分為哪幾層?4分 5 記憶體的vss是指 rss是指 pss是指 uss是指 4分 二 簡答題 6 您認為在測試人員同開發人員的溝通過程中,如何提高溝通的效率和改善溝通的效果?維持測試人員同開發團隊中其他成員良好的人際關係的關鍵是什麼?5分...
keep測試開發面試題
1 自我介紹 2 專案的功能測試是怎麼做的 說了一堆黑盒測試的方法 3 談了談自動化測試的框架,詢問怎麼獲取乙個request,並根據header值返回response 手寫 這裡問了很多亂七八糟的,有些連聽都沒聽清楚,完全問懵了qwq 4 200 204 302 404 500 這幾個碼的含義 5...
百度測試開發面試題
學姐 學長總結的面試題 感謝學姐 針對質量部測試開發 1.幾種常見演算法看下,能夠大概描述出來演算法的過程,複雜度 排序 查詢等 2.給你設定幾種場景,讓你解答 比如給你兩部手機,讓你站在一百層樓高的地方,假設在第 n層手機摔下就會摔破,問你怎樣用著兩部手機確定這個臨界層。場景測試 3.怎樣知道乙個...