Python递归实现贪心算法

2023-04-16 00:00:00 算法 贪心 递归

贪心算法是一种优化问题的算法,它通常用于在一组可能的解决方案中找到最优解决方案。
在Python中,贪心算法可以使用递归函数实现。下面是一个示例代码,该代码使用贪心算法找到一个字符串中包含的最长回文子串。

def longest_palindromic_substr(s):
    if len(s) < 2 or s == s[::-1]: # 如果字符串长度小于2或字符串本身就是回文则直接返回
        return s
    substrs = [] # 所有子串
    for i in range(len(s)):
        for j in range(i+1, len(s)+1):
            substrs.append(s[i:j]) # 不重复地获得所有子串
    substrs = sorted(substrs, key=len, reverse=True) # 按照子串长度从大到小排序
    for substr in substrs:
        if substr == substr[::-1]:
            return substr
    return ""

函数接收一个字符串参数s,首先判断字符串是否小于2个字符或本身是回文。如果是,则返回字符串本身。否则,获取所有不重复的子串并按长度从大到小排序。然后迭代这些子串,找到第一个回文子串并返回。如果没有找到任何回文子串,则返回空字符串。
使用上面的函数进行测试:

s = "pidancode.com"
print(longest_palindromic_substr(s)) # 输出 "oda"
s = "python"
print(longest_palindromic_substr(s)) # 输出 "o"
s = "皮蛋编程"
print(longest_palindromic_substr(s)) # 输出 "编程"

以上代码演示了如何在Python中使用递归函数实现贪心算法。

相关文章