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源创计划”,欢迎正在阅读的你也加入,一起分享。

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