2696. 删除子串后的字符串最小长度 --力扣 --JAVA

简介: 给你一个仅由 大写 英文字符组成的字符串 s 。你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个 "AB" 或 "CD" 子字符串。通过执行操作,删除所有 "AB" 和 "CD" 子串,返回可获得的最终字符串的 最小 可能长度。注意,删除子串后,重新连接出的字符串可能会产生新的 "AB" 或 "CD" 子串。

 题目

给你一个仅由 大写 英文字符组成的字符串 s

你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个"AB""CD" 子字符串。

通过执行操作,删除所有 "AB""CD" 子串,返回可获得的最终字符串的 最小 可能长度。

注意,删除子串后,重新连接出的字符串可能会产生新的 "AB""CD" 子串。

解题思路

    1. 因为不确定需要循环遍历几次,所以选择使用while来进行循环;
    2. 创建标志常量来表示循环状态是否结束;
    3. 利用字符串的replaceAll方法来替换字符串"AB"和"CD";
    4. 当字符串长度与替换前相同时则跳出循环。

    代码展示

    class Solution {
        public int minLength(String s) {
            boolean status = true;
            while (status) {
                int len = s.length();
                s = s.replaceAll("AB", "");
                s = s.replaceAll("CD", "");
                if(s.length() == len){
                    status = false;
                }
            }
            return s.length();
        }
    }

    image.gif


    目录
    相关文章
    |
    2月前
    |
    SQL Java 索引
    java小工具util系列2:字符串工具
    java小工具util系列2:字符串工具
    143 83
    |
    2月前
    |
    存储 安全 Java
    Java零基础-字符串详解
    【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
    112 60
    |
    2月前
    |
    Java 数据库
    java小工具util系列1:日期和字符串转换工具
    java小工具util系列1:日期和字符串转换工具
    58 26
    |
    2月前
    |
    存储 缓存 安全
    java 中操作字符串都有哪些类,它们之间有什么区别
    Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
    62 8
    |
    2月前
    |
    缓存 算法 Java
    本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
    在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
    52 6
    |
    3月前
    |
    Java 数据库
    案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
    这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
    69 15
    |
    3月前
    |
    JavaScript
    力扣3333.找到初始输入字符串Ⅱ
    【10月更文挑战第9天】力扣3333.找到初始输入字符串Ⅱ
    40 1
    |
    3月前
    |
    Java
    JAVA易错点详解(数据类型转换、字符串与运算符)
    JAVA易错点详解(数据类型转换、字符串与运算符)
    64 4
    |
    8天前
    |
    Java
    Java—多线程实现生产消费者
    本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
    Java—多线程实现生产消费者
    |
    10天前
    |
    安全 Java Kotlin
    Java多线程——synchronized、volatile 保障可见性
    Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。