最少删除 Python,While 循环条件语句行为
Minimum Deletions Python, While Loop Conditional statement behavior
我一直在尝试解决 LeetCode 问题 1647。
目标是提供我们需要在字符串中进行删除以使该字符串中每个字母的频率唯一的最少次数。
我试图自己解决它,但遇到了很多困难,并找到了一个非常接近我的想法的解决方案。
不幸的是,由于我认为可能是某些 Python 特定行为,我很难理解它。
from collections import Counter
s = 'aaabbcc'
letterFrequency = Counter(s)
frequencyValues = letterFrequency.values()
frequencySet = set()
count = 0
for frequencyValue in frequencyValues:
while frequencyValue and frequencyValue in frequencySet:
count += 1
frequencyValue -= 1
frequencySet.add(frequencyValue)
print(count)
我特别不明白的部分是while循环的条件语句。
我知道这个特定的条件 frequencyValue and frequencyValue in frequencySet
正在检查值是否在 frequencySet
中,但我不确定这个条件如何让我们检查 frequencyValue
是否多余,因此添加额外的删除。
我已经将 link 包含在实际的 LeetCode 问题中 here。
我正在准备面试,如果有任何建议我将不胜感激^^
说明
计数器是一个带有字母的字典:计数值
对于值中的每个字母,如果已经遇到计数(即在频率集中收集),则必须开始计算需要多少更改才能仅具有唯一值。
由此算法是:
在每个重复值处:
计数公司1
值减少 1
在循环结束时,您有一组 uniq 值,count 是达到目标的总步数。
ps: 祝面试顺利
我一直在尝试解决 LeetCode 问题 1647。
目标是提供我们需要在字符串中进行删除以使该字符串中每个字母的频率唯一的最少次数。
我试图自己解决它,但遇到了很多困难,并找到了一个非常接近我的想法的解决方案。
不幸的是,由于我认为可能是某些 Python 特定行为,我很难理解它。
from collections import Counter
s = 'aaabbcc'
letterFrequency = Counter(s)
frequencyValues = letterFrequency.values()
frequencySet = set()
count = 0
for frequencyValue in frequencyValues:
while frequencyValue and frequencyValue in frequencySet:
count += 1
frequencyValue -= 1
frequencySet.add(frequencyValue)
print(count)
我特别不明白的部分是while循环的条件语句。
我知道这个特定的条件 frequencyValue and frequencyValue in frequencySet
正在检查值是否在 frequencySet
中,但我不确定这个条件如何让我们检查 frequencyValue
是否多余,因此添加额外的删除。
我已经将 link 包含在实际的 LeetCode 问题中 here。
我正在准备面试,如果有任何建议我将不胜感激^^
说明
计数器是一个带有字母的字典:计数值
对于值中的每个字母,如果已经遇到计数(即在频率集中收集),则必须开始计算需要多少更改才能仅具有唯一值。 由此算法是:
在每个重复值处: 计数公司1 值减少 1
在循环结束时,您有一组 uniq 值,count 是达到目标的总步数。
ps: 祝面试顺利