1. 解题思路
这一题的话其实挺简单的,想清楚的话其实最后一轮遗留的字符必然是出现频率最高的一个或多个字符的最后一次出现的字符位置。
我们先用一个counter统计一下各个字符出现的次数,然后找到出现最多的几个字符取出他们最后一次出现的位置,然后拼成一个字符串即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def lastNonEmptyString(self, s: str) -> str:
cnt = Counter(s)
max_cnt = max(cnt.values())
valid = {ch: -1 for ch in cnt if cnt[ch] == max_cnt}
res = ""
for ch in s[::-1]:
if ch in valid and valid[ch] == -1:
res = ch + res
valid[ch] = 0
return res
提交代码评测得到:耗时298ms,占用内存22.2MB。