leetcode - 3223. Minimum Length of String After Operations

Description

You are given a string s.

You can perform the following process on s any number of times:

  • Choose an index i in the string such that there is at least one character to the left of index i that is equal to si, and at least one character to the right that is also equal to si.
  • Delete the closest character to the left of index i that is equal to si.
  • Delete the closest character to the right of index i that is equal to si.

Return the minimum length of the final string s that you can achieve.

Example 1:

复制代码
Input: s = "abaacbcbb"

Output: 5

Explanation:
We do the following operations:

Choose index 2, then remove the characters at indices 0 and 3. The resulting string is s = "bacbcbb".
Choose index 3, then remove the characters at indices 0 and 5. The resulting string is s = "acbcb".
Example 2:

Input: s = "aa"

Output: 2

复制代码
Explanation:
We cannot perform any operations, so we return the length of the original string.

Constraints:

复制代码
1 <= s.length <= 2 * 10^5
s consists only of lowercase English letters.

Solution

Because we only need to get the minimum length of the string, so we don't actually need to decide which character we need to delete. Just count the frequency of all characters, and then for anything above 2, if it's an odd number, we have 1 (keep deleting 2s until it's below 3), for even numbers, we have 2 (keep deleting 2s until it's below 3). Add those numbers up and we have our result.

Update: for frequencies below 3, it's the same: for 1 we add 1, for 2 we add 2.

Time complexity: o ( n ) o(n) o(n)

Space complexity: o ( n ) ≈ o ( 1 ) o(n) \approx o(1) o(n)≈o(1), because we have at most 26 lowercase characters.

Code

python3 复制代码
class Solution:
    def minimumLength(self, s: str) -> int:
        ch_cnt = collections.Counter(s)
        res = 0
        for ch, cnt in ch_cnt.items():
            res += (1 if cnt & 1 == 1 else 2)
        return res
相关推荐
她的男孩2 小时前
Spring Boot 接 Flowable 工作流:用 3 个注解搭一个请假审批流程
java·后端·架构
复杂网络3 小时前
多个 Claude Code 与多个 Codex 协同工作:设计与实现方案
算法
荣码3 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
plainGeekDev5 小时前
Gson → kotlinx.serialization
android·java·kotlin
小bo波13 小时前
Java Swing 图形用户界面实验 —— 从算术练习到游戏开发的完整实践
java·课程设计·gui·游戏开发·扫雷·swing
咖啡八杯15 小时前
GoF设计模式——备忘录模式
java·后端·spring·设计模式
HjhIron18 小时前
面试常客:字符串算法从入门到进阶
算法·面试
吴佳浩20 小时前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek