我在尝试解决字符串糖果粉碎问题时遇到了这个问题。这是我对该问题的解释的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
这两种方法中哪一种方法的时间和空间效率更高,是否有另一种方法可以使用一堆字典来解决问题?