Re: [闲聊] 每日leetcode

楼主: Meaverzt (Meaverzt)   2025-01-13 13:11:01
题目
有一个字串s
对每个index我们都要找左边跟右边最近出现过的s[index]把他删掉
如果没有就不用理他
最后回传字串的长度
思路:
去计算每个字出现过几遍
总共会有三种情况
1.出现少于3遍:没办法继续简化 答案长度加上出现的次数
2.出现奇数遍:因为每次简化长度会减2 所以最后答案长度+1 eg:aaaaa最后会只剩a
3.出现偶数遍:答案长度+2 eg:aaaa最后会剩aa
每个字跑完长度加起来就是答案了
Code:
class Solution(object):
def minimumLength(self, s):
dict={}
for i in s:
if i not in dict:
dict[i]=1
else:
dict[i]+=1
ans=0
for i in dict:
if dict[i]<3:
ans+=dict[i]
else:
ans+=2 if dict[i]%2==0 else 1
return ans
作者: Furina (芙宁娜)   2024-01-13 13:11:00
大师
作者: jimmy888 (jimmy888)   2025-01-13 13:29:00
剩我不会写程式了

Links booklink

Contact Us: admin [ a t ] ucptt.com