• LeetCode 1750. 删除字符串两端相同字符后的最短长度 双指针


    地址   https://leetcode-cn.com/problems/minimum-length-of-string-after-deleting-similar-ends/

    给你一个只包含字符 'a''b' 和 'c' 的字符串 s ,你可以执行下面这个操作(5 个步骤)任意次:
    
    选择字符串 s 一个 非空 的前缀,这个前缀的所有字符都相同。
    选择字符串 s 一个 非空 的后缀,这个后缀的所有字符都相同。
    前缀和后缀在字符串中任意位置都不能有交集。
    前缀和后缀包含的所有字符都要相同。
    同时删除前缀和后缀。
    请你返回对字符串 s 执行上面操作任意次以后(可能 0 次),能得到的 最短长度 。
    
     
    
    示例 1:
    
    输入:s = "ca"
    输出:2
    解释:你没法删除任何一个字符,所以字符串长度仍然保持不变。
    示例 2:
    
    输入:s = "cabaabac"
    输出:0
    解释:最优操作序列为:
    - 选择前缀 "c" 和后缀 "c" 并删除它们,得到 s = "abaaba"- 选择前缀 "a" 和后缀 "a" 并删除它们,得到 s = "baab"- 选择前缀 "b" 和后缀 "b" 并删除它们,得到 s = "aa"- 选择前缀 "a" 和后缀 "a" 并删除它们,得到 s = "" 。
    示例 3:
    
    输入:s = "aabccabba"
    输出:3
    解释:最优操作序列为:
    - 选择前缀 "aa" 和后缀 "a" 并删除它们,得到 s = "bccabb"- 选择前缀 "b" 和后缀 "bb" 并删除它们,得到 s = "cca" 。
     
    
    提示:
    
    1 <= s.length <= 105
    s 只包含字符 'a''b' 和 'c' 。

    (双指针) O(n)
    使用双指针 循环减去字母相同的前缀后缀
    注意边界条件

    class Solution {
    public:
        int minimumLength(string s) {
            int l = 0; int r = s.size()-1;
    
            while(l<r){
                if(s[l] == s[r]){
                    char c =s[r];
                    while(l>=0 && l <=r && s[l] ==c) l++;
                    while(r>=0&& r>=l && s[r] ==c) r--;
                }else{
                    break;
                }
            }
    
            if(l>r) return 0;
            if(l==r) return 1;
            return  r-l+1;
        }
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    链表10-开发可用链表(使用链表)
    LRU简单实现
    图片服务器搭建过程
    scp
    dubbo-admin无法访问
    linux tomcat启动后无法访问
    linux进程端口防火墙
    centos7 jdk
    com.alibaba.dubbo.rpc.RpcException: Fail to start server(url: dubbo://192.16。。
    linux与Unix切换到root用户
  • 原文地址:https://www.cnblogs.com/itdef/p/14384644.html
Copyright © 2020-2023  润新知