※ 引述 《Meaverzt (单推凛宝)》 之铭言:
:  
: 题目
:  
: 有一个字串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
思路:
差不多
奇数能减到剩一个 偶数能减到剩两个
长度扣掉能扣的就是答案
Python Code:
class Solution:
    def minimumLength(self, s: str) -> int:
        record = [0] * 26
        n = len(s)
        for c in s:
            record[ord(c) - ord("a")] += 1
        for i in range(26):
            if record[i] == 0:
                continue
            if record[i] % 2 == 1:
                n -= record[i] - 1
            else:
                n -= record[i] - 2
        return n