如何使下面的python程序对于大输入更有效地使用内存

问题描述

这个程序是要找出长度为 N 的字符串 S 中至少有 i 个不同字母的子串的个数,其中 1

def DistinctChars (N,S):
    # Write your code here
    substrings = " ".join((S[i:j] for i in range(N) for j in range(i+1,N+1)))
    for i in range(1,27):
        if i==1:
            yield len(substrings.split(" "))
        else:
            yield len([item for item in substrings.split(" ") if len(set(item)) >= i])
    
 
N = int(input())
S = input()
 
out_ = DistinctChars(N,S)
print (' '.join(map(str,out_)))

示例输入

N=4

A=aabc

输出

10 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

代码根据需要快速并且输出正确。但是不管怎么试,都超过了分配的250MB内存。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)