更多时间和空间有效的方式来访问堆栈中的字典值而不知道它的密钥?

时间:2018-06-02 18:31:02

标签: python dictionary stack

我在尝试解决字符串糖果粉碎问题时遇到了这个问题。这是我对该问题的解释的MY版本:

  

给定字符串"DAABBBBABCC",返回3或更多字符串   删除连续的字母或字符。请注意,一旦删除了   字符串的一部分,任何3个或更多的新组合   随后也应删除连续的字母。

     

因此,"DAABBBBABCC"缩小后变为" DAAABCC"   减少到"DBCC" [返回的字符串]。

我通过维护一堆字母词典来解决这个问题。如果我看到字母' a,我会将其作为{'a': 1}添加到堆栈中,如果下一个字母也是'a',我会增加此值,否则我会推送到堆叠新信的字典说{'b': 1}。现在为了增加重复字符的计数,我需要检查添加到堆栈的最后一个字母字典的计数。在不知道推送的最后一个字典中的密钥是什么的情况下,在Python中访问计数的最有效方法是什么?

为了解释这个问题,这是一个例子。迭代字符串"hhaaa"

后构建堆栈
>>> stack
[{'h': 2}, {'a': 3}]

我想过两种方法,但它们似乎有些费力。哪一个比另一个更有效,是否有更短的计算方法? 注意:您不知道最后一个字典的键是什么,字典总是有一个键值对。

第一种方法是:

>>> value = list(stack[-1].values())[0]
>>> value
3

第二种方法是:

>>> value = next(iter(stack[-1].values()))
>>> value
3

这两种方法中哪一种方法的时间和空间效率更高,是否有另一种方法可以使用一堆字典来解决问题?

0 个答案:

没有答案
相关问题