Python|只含有括號的字符串是否有效

本文首發於微信公衆號:"算法與編程之美",歡迎關注,及時瞭解更多此係列文章。

問題描述

給定一個只包括 '(',')','{','}','[',']' 的字符串,判斷字符串是否有效。有效字符串需滿足:1.左括號必須用相同類型的右括號閉合。2.左括號必須以正確的順序閉合。
示例1:
輸入:[]
輸出:字符串中括號有效  
示例2:
輸入: (]
輸出: 字符串中括號無效

解決方案

1)定義一個函數,輸入字符串,首先判斷字符串是否爲空字符串,若爲空,則不符合題意,打印無效。
def str():
str = input(“請輸入一個只包括‘(’,’)’,‘[‘,’]’,’{‘,’}’”的字符串:)

if str.strip() == ‘’:
     print(“字符串無效”)
2)判斷字符串中括號的個數,若爲單數那必定是無效。
if len(str.strip()) > 0:
if len(str) % 2 == 1:
      print(‘字符串無效’)
3)判斷字符串中的括號是否爲相同類型閉合,是否按照正確的順序閉合。
if len(str) % 2 == 0:
     for i in range(int(len(str))):
         for j in range(len(str) - 2):
        x1 = str[j] == ‘(‘ and str[j + 1] ==  ‘)’
        x2 = str[j] == ‘[‘ and str[j + 1] ==  ‘]’
        x3 = str[j] == ‘{‘ and str[j + 1] ==  ‘}’
        if x1 or x2 or x3:
             str = str[:j] + str[j + 2]
            break
    if  len(str) == 2:
         d = [‘()’,’[,]’,’{,}’]
        if str not in d:
             print(‘字符串中的括號無效’)
         else:
             print(‘字符串中的括號有效’)
    if  len(str) > 2:
         print(‘字符串中括號無效’)
4)最後打印出str()就行
圖3.1 運行流程

結語

此題主要需要想辦法判斷括號左右是否符合條件,在合適的地方跳出循環,判斷字符串的長度即可,多思考多嘗試對此類題也會有更深的理解。


實習編輯: 劉鳳蓮
稿件來源:深度學習與文旅應用實驗室(DLETA)

本文分享自微信公衆號 - 算法與編程之美(algo_coding)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章