大致思想是:
(1)定義屬性,如括號以及括號的配對關係
(2)從字串(文字)中提取括號(此處以字串為例),從而得到乙個只包含括號的字串
(3)利用棧儲存開括號,遇到閉括號就與棧頂元素進行配對(此處直接將list當做棧使用),若配對就出棧
classparenmatch(object):
"""括號匹配問題
"""def
__init__
(self, text):
self.parens = "
(){}
"
self.opposite =
", "
[":"]"
}
self.text =text
defgenerate_paren(self):
"""括號生成器,每次呼叫返回text裡的下一括號及其位置
"""i, text_len =0, len(self.text)
while
true:
while i < text_len and self.text[i] not
inself.parens:
i += 1
if i >=text_len:
return
yield
self.text[i], i
i += 1
defhandle_match(self):
"""處理括號匹配問題
"""stack =
for pr, i in
self.generate_paren():
if pr in
self.opposite:
elif stack and self.opposite[stack[-1]] ==pr:
stack.pop()
else
:
print("
unmatching is found at
", i, "
for"
, pr)
return
false
return
notstack
text = "
[(哈哈{})]
"pm =parenmatch(text)
print(pm.handle_match())
在乙個字串中尋找另外乙個字串
在乙個字串中尋找另外乙個字串 public class text foundit true break test system.out.println foundit?found it didn t find it 該段程式有點難以理解,主要就是if語句的理解,if searchme.charat ...
如何判斷乙個字串中的括號是否匹配
描述 給定乙個包含 的字串,如果判斷這個字串中的括號是否正確匹配,匹配輸出yes,否則輸出no input s a output yes 實現一 基於括號數量統計的方法 include include include using namespace std bool match char str i...
乙個字串演算法問題
已知一組數字 21,25,11,32,12,35,55,77,66 要求按以下規則進行排序 第乙個數最大,第二個數最小,第三個數是剩下中的最大的,第四個數是剩下中的最小的,依此類推,請設計乙個字元介面的程式解決之 c codes as below class program console.read...