当前位置: 首页 > 知识库问答 >
问题:

最长回文:什么可能会减缓我的DP解决方案?

章烨烨
2023-03-14

我的解决方案不知何故通过了他们所有的测试用例,但运行超过了时间限制。我已经实现了一个基于DP的解决方案,不知道什么可能需要额外的时间。

class Solution:
    def longestPalindrome(self, s: str) -> str:
        table = [[True] for i in range(len(s))]
        best = (0,1)
        for i in range(len(s) - 1):
          for j in range(0, len(s) - i -1):
            size = i + 1
            shift = j
            diag = table[j + 1][i-1]
            eq = s[shift] ==  s[shift + size]
            table[j].append(diag and eq)
            if diag and eq: best = (shift,  shift + size + 1)
        return s[best[0]:best[1]]

共有1个答案

越嘉石
2023-03-14

这里有一种解决这个问题的方法,
首先定义一个窗口大小(比如滑动窗口),然后尝试用这个窗口大小来分割字符串,并检查它是否是回文。

如果你没有任何解决方案到达终点,只需减小窗口大小并重新开始,直到找到回文。

下面是一个示例代码:

class Solution:
    def longestPalindrome(self, s: str) -> str:
        window_size = len(s)
        while True:
            for i in range(0, (len(s) - window_size) + 1):
                if s[i : i + window_size] == s[i:i + window_size][::-1]:
                    return s[i : i + window_size]
            else:
                window_size -= 1
 类似资料:
  • 这是一个骇人听闻的问题:爱丽丝是一个幼儿园老师。她想给班上的孩子们一些糖果。所有的孩子坐成一行(他们的位置是固定的),每个人根据他(她)在班上的表现有一个评级分数。爱丽丝想给每个孩子至少一颗糖。如果两个孩子挨着坐,那么评分较高的那一个必须得到更多的糖果。爱丽丝想省钱,所以她需要尽量减少给孩子们的糖果总数。 测试数组:n=10,n个元素为[2 4 2 6 1 7 8 9 2 1]。我得到的答案是18

  • 问题内容: 至少有六打Django应用程序为Django提供OpenID身份验证: django-openid django-openid-auth 另一个django-openid-auth,似乎已经死了 django-authopenid django-socialauth(还提供对Twitter和Facebook帐户的身份验证) django-socialregistration(也具有Fa

  • 我有一个我无法解决的组合问题。 给定一组向量和一个目标向量,为每个向量返回一个标量,以便集中缩放向量的平均值最接近目标。 编辑:权重w_i在范围[0,1]内。这是一个约束优化问题: 最小化d(平均(w_i*x_i),目标),条件是总和(w_i)-1=0 如果我不得不命名这个问题,它将是无界子集平均。 我已经研究过无界背包和类似的问题,但由于数字的相互依赖性,动态编程实现似乎是不可能的。 我还补充了

  • 我有一个练习: 您将获得不同面额的硬币和总金额。请编写一个函数来计算您需要的最少数量的硬币,以弥补该金额。如果硬币的任何组合都无法弥补该金额,请返回-1 例1: 我还谷歌了一个这样的解决方案: 我知道它是关于DP的,但是,我对它很困惑,比如,的含义是什么,为什么要添加,为什么要添加,为什么要添加1? 有人能用简单的英语指出出路吗?

  • 问题内容: 请注意 :这是一个古老的问题,带有古老的答案。现在大多数链接的应用程序都不再需要维护。这些天来,大多数人似乎都使用django- allauth 或python-social- auth 。为了后代的缘故,下面将完整保留原始问题。 至少有六打Django应用程序为Django提供OpenID身份验证: django-openid django-openid-auth 另一个django

  • 以下是我尝试过的,但在某些情况下失败了,但我觉得我几乎走上了正确的轨道。