括号匹配编程题--python

本文介绍了一个Python函数实现的括号匹配规则判断逻辑,包括输入字符串的匹配验证过程,通过实例展示了函数使用方法及正确性验证。
#!/usr/bin/python
#-*- coding: utf8 -*-
def isMatched(inStr):
    """
        Judge whether the input match rules
        @author: ken
        >>>isMatched('{}{}(())')
        >>>True
        >>>isMatched('{)}(')
        >>>False
        >>>isMatched('([]')
        >>>False
    """
    b_match = True
    matchs = {"{": "}", "(": ")", "[": "]"}
    while (b_match and len(inStr) != 0):
        w = inStr[0]
        if (not matchs.has_key(w)) or (inStr.find(matchs[w]) == -1):
            b_match = False
        else:
            inStr = inStr.replace(w, '', 1)
            inStr = inStr.replace(matchs[w], '', 1)
    return b_match


if __name__ == '__main__':        
    inStr = "([)]"
    print isMatched(inStr)
<think>好的,用户需要关于Python编程实训题目的资料。首先,我需要整理一些经典的题目类型,比如算法、字符串处理、数据结构应用等。根据用户提供的引用内容,他们之前提到过同构数、分数序列、回文串判断、素数查找以及栈的应用,比如括号匹配问题。这些都是很好的例子,可以作为实训题目。 接下来,我需要确保回答结构清晰,分门别类地列出题目,每个类别下给出具体的问题描述和示例代码。用户可能希望这些题目能覆盖不同的难度和知识点,所以需要包括基础题、中等难度题和进阶题。例如,基础题可以包括数学计算和字符串操作,中等题可能涉及数据结构和递归,而进阶题则可能包括动态规划和算法优化。 还要注意用户提到的格式要求,行内数学公式用$...$,独立公式用$$...$$,并且正确使用LaTeX语法。在示例代码部分,要使用代码块包裹,并确保语法正确。此外,生成相关问题时要参考用户之前的提问,比如性能分析、优化方法、应用场景等,但这里可能需要调整以适配编程题目相关的问题。 需要检查引用内容,确保正确标注来源。例如,引用[1]中的同构数查找和分数序列,引用[2]中的括号匹配问题。这些引用应自然地融入回答中,作为示例题目的来源。 最后,用户可能希望资料具有实用性,因此每个题目都应包含问题描述和示例代码,帮助学习者理解和练习。同时,相关问题部分要引导用户深入思考,比如如何优化代码、处理边界情况或扩展题目功能。 总结步骤: 1. 分类整理编程题目类型,确保涵盖不同难度和知识点。 2. 每个题目提供清晰的描述和示例代码,符合格式要求。 3. 正确引用站内资料,标注来源。 4. 生成相关问题,促进进一步学习。 5. 检查格式和语法,确保符合用户指定的系统级指令。</think>### Python编程实训题目分类及示例 #### 一、基础算法类 1. **同构数查找** 查找1-1000范围内满足平方数右端包含自身的数,例如$5^2=25$,$25^2=625$ ```python for n in range(1, 1001): square = str(n**2) if square.endswith(str(n)): print(f"{n}是同构数") ``` 2. **分数序列求和** 计算$\frac{2}{1}+\frac{3}{2}+\frac{5}{3}+\frac{8}{5}...$前$n$项之和 ```python def fraction_series(n): a, b, total = 2.0, 1.0, 0.0 for _ in range(n): total += a / b a, b = a + b, a return total ``` #### 二、字符串处理 3. **回文串判断** 使用字符串切片验证对称性,时间复杂度$O(n)$[^1] ```python def is_palindrome(s): return s == s[::-1] ``` 4. **括号有效性验证** 利用栈结构验证括号嵌套顺序,例如"()[]{}"有效而"([)]"无效[^2] ```python def is_valid_parentheses(s): stack = [] mapping = {')':'(', ']':'[', '}':'{'} for char in s: if char in mapping: top = stack.pop() if stack else '#' if mapping[char] != top: return False else: stack.append(char) return not stack ``` #### 三、数学运算 5. **素数筛法** 埃拉托斯特尼筛法求100-1000范围内的素数,时间复杂度$O(n \log \log n)$ ```python def sieve_eratosthenes(start, end): sieve = [True] * (end+1) sieve[0:2] = [False, False] for i in range(2, int(end**0.5)+1): if sieve[i]: sieve[i*i : end+1 : i] = [False]*len(sieve[i*i : end+1 : i]) return [i for i in range(start, end+1) if sieve[i]] ``` #### 四、数据结构应用 6. **链表反转** 迭代法实现单链表反转,空间复杂度$O(1)$ ```python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def reverse_list(head): prev, curr = None, head while curr: next_temp = curr.next curr.next = prev prev = curr curr = next_temp return prev ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值