找到字符串中的异位词,牛客NC387,力扣438,以下代码执行结果不同。
from collections import Counter
class Solution:
def findAnagrams(self, s: str, p: str) -> List[int]:
n, m, res = len(s), len(p), []
if n < m: return res
countp = Counter(p)
counts = Counter(s[:m])
if counts == countp:
res.append(0)
for i in range(m, n):
counts[s[i - m]] -= 1
counts[s[i]] += 1
if counts == countp:
res.append(i - m + 1)
c1 = Counter({'a': 1, 'b': 1})
c2 = Counter({'a': 1, 'b': 1, 'c': 0})
print(c1 == c2)
return res
用例"cbaebabacd","abc",牛客运行结果:[0],False,力扣运行结果:[0,6],True。
原因:牛客用的Python3.9版本,力扣用的Python3.10版本,本地安装的Python3.8,与牛客运行结果一致,切换到Python3.10,跟力扣运行结果一致。Counter本质是个计数器,c元素出现0次,跟没出现效果一样,所以个人认为Python3.10的结果更合理一些。
ps:最长递增子序列题目,一样的代码,时间复杂度都是O(N*2),为啥牛客的执行时间在200ms以下,而力扣的执行时间在2500ms以上呢?有知道原因的麻烦告知一下,感谢。
pps:有些题目呦,自己只能想到最简单解法,一看最高赞题解,不由得瞪大眼睛连呼我X,感叹人和人的智商能有这么大差距。。。