分区中唯一子字符串的最大数量 - python

我修改了标题,以使其更易于理解。

这是问题的详细版本:

我们有一个字符串s,并想将其拆分为子字符串。每个子字符串彼此不同。我们从一个剪切中可以拥有的唯一子字符串的最大数量是多少。换句话说,串联形成s的唯一子字符串的最大数量是多少。

这里有些例子:

Example 1
s = 'aababaa'
output = 4
Explain: we can split `s` into aa|b|aba|a or aab|a|b|aa, 
         and 4 is the max number of substrings we can get from one split.

Example 2
s = 'aba'
output = 2
Explain: a|ba

Example 3
s = 'aaaaaaa'
output = 3
Explain: a|aa|aaaa

注意:s仅包含小写字符。我没有被告知s多久,因此无法猜测最佳时间复杂度。 🙁

这是一个NP难题吗?如果没有,如何有效解决?

我从我的一个朋友那里听到了这个问题,无法解决。我正在尝试使用Trie +贪婪解决此问题。对于第一个示例,该方法失败。

这是我想出的Trie解决方案:

def triesolution(s):
    trie = {}
    p = trie
    output = 0
    for char in s:
        if char not in p:
            output += 1
            p[char] = {}
            p = trie
        else:
            p = p[char]
    return output

例如1,上面的代码将返回3,因为它试图将s拆分为a|ab|abaa

添加:由于每个人的想法,看来这个问题非常接近NP问题。现在,我正在尝试从这个方向进行思考。假设我们有一个函数Guess(n)。如果我们可以从一个分割中找到True唯一的子字符串,否则此函数将返回n,否则返回False。这里的一种观察是,如果是Guess(n) == True,那么所有Guess(i) == Truei <= n。因为我们可以将两个相邻的子字符串合并在一起。这种观察可能导致二元解。但是,仍然需要我们能够非常有效地计算Guess函数。可悲的是,我仍然找不到计算Guess(n)的多项式方法。

参考方案

这被称为冲突感知字符串分区问题,并且在Anne Condon,JánMaňuch和Chris Thachuk的论文中通过将3-SAT简化为NP-完全证明了-冲突感知字符串分区问题及其复杂性用于基因合成的寡核苷酸设计的相关性(国际计算与组合学会议,265-275,2008年)。

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

python JSON对象必须是str,bytes或bytearray,而不是'dict - python

在Python 3中,要加载以前保存的json,如下所示:json.dumps(dictionary)输出是这样的{"('Hello',)": 6, "('Hi',)": 5}当我使用json.loads({"('Hello',)": 6,…

Python:图像处理可产生皱纹纸效果 - python

也许很难描述我的问题。我正在寻找Python中的算法,以在带有某些文本的白色图像上创建皱纹纸效果。我的第一个尝试是在带有文字的图像上添加一些真实的皱纹纸图像(具有透明度)。看起来不错,但副作用是文本没有真正起皱。所以我正在寻找更好的解决方案,有什么想法吗?谢谢 参考方案 除了使用透明性之外,假设您有两张相同尺寸的图像,一张在皱纹纸上明亮,一张在白色背景上有深…