python枚举算法题目
Python枚举算法题目
枚举算法是一种基础的算法,它的作用是在一组可能性中逐一尝试,以到符合条件的解。在Python中,可以使用for循环和range函数来实现枚举算法。
下面是几个常见的Python枚举算法题目:
1. 出列表中两个数之和等于指定值的索引
题目描述:给定一个整数列表和一个目标值,出列表中两个数之和等于目标值,并返回这两个数的索引。
解题思路:使用嵌套循环遍历列表,对于每个元素,都遍历一次其后面的所有元素,并判断它们之和是否等于目标值。
代码实现:
```
def twoSum(nums, target):
    for i in range(len(nums)):
        for j in range(i+1, len(nums)):
            if nums[i] + nums[j] == target:
                return [i, j]
```
2. 出字符串中最长回文子串
题目描述:给定一个字符串,出其中最长的回文子串。
解题思路:使用嵌套循环遍历字符串,对于每个字符,都从它开始向左右两边扩展,并判断扩展后的子串是否为回文串。如果是,则更新最长回文子串。
代码实现:
快速排序python实现```
def longestPalindrome(s):
    max_len = 0
    max_str = ""
    for i in range(len(s)):
        for j in range(i, len(s)):
            if s[i:j+1] == s[i:j+1][::-1] and j-i+1 > max_len:
                max_len = j-i+1
                max_str = s[i:j+1]
    return max_str
```
3. 出两个字符串的最长公共子串
题目描述:给定两个字符串,出它们的最长公共子串。
解题思路:使用嵌套循环遍历两个字符串,对于每个字符,都比较它们是否相同。如果相同,则继续比较下一个字符,并记录当前的最长公共子串。如果不同,则重新开始比较。
代码实现:
```
def longestCommonSubstring(s1, s2):
    m = len(s1)
    n = len(s2)
    dp = [[0] * (n+1) for _ in range(m+1)]
    max_len = 0
    max_str = ""
    for i in range(1, m+1):
        for j in range(1, n+1):
            if s1[i-1] == s2[j-1]:
                dp[i][j] = dp[i-1][j-1] + 1
                if dp[i][j] > max_len:
                    max_len = dp[i][j]
                    max_str = s1[i-max_len:i]
            else:
                dp[i][j] = 0
    return max_str
```
4. 出数组中第k小的元素
题目描述:给定一个无序数组和一个整数k,出第k小的元素。
解题思路:使用快速排序算法,每次选取一个pivot元素将数组分为两部分,并比较pivot元素的索引和k的大小关系。如果pivot元素的索引小于k,则在右半部分继续查;否则在左半部分继续查。直到到第k小的元素为止。
代码实现:
```
def quickSelect(nums, k):
    def partition(left, right):
        pivot = nums[left]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。