Python實現求解括弧匹配問題的方法

來源:互聯網
上載者:User
這篇文章主要介紹了Python實現求解括弧匹配問題的方法,涉及Python基於棧的字串遍曆、判斷、運算解決括弧匹配相關操作技巧,有需要的朋友可以參考下

本文執行個體講述了Python實現求解括弧匹配問題的方法。分享給大家供大家參考,具體如下:

這個在本科學習資料結構的時候已經接觸很多了,主流的思想是藉助棧的壓入、彈出來進行匹配,至於python的話可以使用列表來完成這個操作,因為列表的append方法相當於棧的push方法,列表的pop方法相當於棧的pop方法。

主要的思路:

首先設定兩個列表分別存放的是各種括弧的開括弧和閉括弧,然後遍曆給定的字串,分如下幾種情況:

1.字串首字元出現在閉括弧列表中,直接結束,輸出錯誤

2.字串長度不為偶數,直接結束,輸出錯誤

3.對原始字串列表化去重,如果去重後的列表長度不為偶數直接結束,輸出錯誤

4.遍曆字串,將屬於開括弧集合的括弧加入到列表中,當遇上一個閉括弧的時候計算該閉括弧在閉括弧列表中的索引與當前列表最後一個開括弧在開括弧列表中的索引是否一致,一致則繼續,否則直接結束,輸出錯誤

主要是在長度很大的時候可以儘快判斷一些比較明顯的錯誤的模式,節省時間,按照這個簡單的思想,下面是具體的實現:

#!usr/bin/env python#encoding:utf-8'''''__Author__:沂水寒城功能:括弧匹配的相關問題'''def bracket_mathch(one_str): ''''' 括弧匹配 ''' tmp_list=[] open_bracket_list=['(','[','{','<','《'] close_bracket_list=[')',']','}','>','》'] one_str_list=list(one_str) length=len(one_str_list) set_list=list(set(one_str_list)) num_list=[one_str_list.count(one) for one in set_list] if one_str[0] in close_bracket_list:  return False elif length%2!=0:  return False elif len(set_list)%2!=0:  return False else:  for i in range(length):   if one_str[i] in open_bracket_list:    tmp_list.append(one_str[i])   elif one_str[i] in close_bracket_list:    if close_bracket_list.index(one_str[i])==open_bracket_list.index(tmp_list[-1]):     tmp_list.pop()    else:     return False     break return Trueif __name__ == '__main__': one_str_list=['({})','({[<《》>]})','[(]){}','{{{{{{','([{}])','}{[()]'] for one_str in one_str_list:  if bracket_mathch(one_str):   print one_str, '正確'  else:   print one_str, '錯誤' tmp='{}[{()()[]<{{[[[[(())()()(){}[]{}[]()<>]]]]}}>}]' print bracket_mathch(tmp)

結果如下:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.