码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • LeetCode 0522.最长特殊序列 II:两句话讲明思路(子序列判断)


    【LetMeFly】522.最长特殊序列 II:两句话讲明思路(子序列判断)

    力扣题目链接:https://leetcode.cn/problems/longest-uncommon-subsequence-ii/

    给定字符串列表 strs ,返回其中 最长的特殊序列 的长度。如果最长特殊序列不存在,返回 -1 。

    特殊序列 定义如下:该序列为某字符串 独有的子序列(即不能是其他字符串的子序列)。

     s 的 子序列可以通过删去字符串 s 中的某些字符实现。

    • 例如,"abc" 是 "aebdc" 的子序列,因为您可以删除"aebdc"中的下划线字符来得到 "abc" 。"aebdc"的子序列还包括"aebdc"、 "aeb" 和 "" (空字符串)。

     

    示例 1:

    输入: strs = ["aba","cdc","eae"]
    输出: 3
    

    示例 2:

    输入: strs = ["aaa","aaa","aa"]
    输出: -1
    

     

    提示:

    • 2 <= strs.length <= 50
    • 1 <= strs[i].length <= 10
    • strs[i] 只包含小写英文字母

    解题方法:子序列判断

    解题思路

    1. 若字符串a的某个子序列是“独有的子序列”,则a更是“独有的子序列”,因此“最长独有的子序列”一定是字符串列表中的某完整字符串(如有);
    2. 一个字符串是“独有的子序列”,当前仅当它不是任何一个其他字符串的子序列。

    解题方法

    按字符串长度从长到短排序,依次判断每个字符串是否不是其他任何一个字符串的子序列。若该字符串不是任何一个其他字符串的子序列,则返回该字符串的长度。否则返回-1。

    时空复杂度分析

    • 时间复杂度 O ( n 2 l log ⁡ n ) O(n^2l\log n) O(n2llogn),其中 n = l e n ( s t r s ) n=len(strs) n=len(strs), l l l是字符串平均长度
    • 空间复杂度 O ( log ⁡ n ) O(\log n) O(logn)

    AC代码

    C++
    class Solution {
    private:
        bool isSub(string& a, string& b) {
            for (int ia = 0, ib = 0; ia < a.size(); ia++, ib++) {
                while (ib < b.size() && b[ib] != a[ia]) {
                    ib++;
                }
                if (ib == b.size()) {
                    return false;
                }
            }
            return true;
        }
    
        bool ok(vector<string>& strs, int index) {
            for (int i = 0; i < strs.size(); i++) {
                if (i != index && isSub(strs[index], strs[i])) {
                    return false;
                }
            }
            return true;
        }
    public:
        int findLUSlength(vector<string>& strs) {
            sort(strs.begin(), strs.end(), [](const string& a, const string& b) {
                return a.size() > b.size();
            });
            for (int i = 0; i < strs.size(); i++) {
                if (ok(strs, i)) {
                    return strs[i].size();
                }
            }
            return -1;
        }
    };
    

    同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

    Tisfy:https://letmefly.blog.csdn.net/article/details/139756781

  • 相关阅读:
    Java核心知识点十万字最强总结(从基础到高级,Java的核心知识点的上篇,全部都是精华)
    如何在Linux部署Portainer并结合内网穿透远程管理本地Docker容器
    c#WinFrom自定义图表仪表控件-频谱
    【凸优化学习笔记1】什么是优化、优化的数学表达形式
    【MAPBOX基础功能】20、mapbox获取当前已上图的所有的图层
    [C++] 神奇的 “常量“
    PLC-Recorder离线分析软件Ana里为什么不能显示变量的编号?
    CentOS 7 搭建 LVS集群 NAT模式
    localStorage和session storage
    AOP获取通知以及实际应用
  • 原文地址:https://blog.csdn.net/Tisfy/article/details/139756781
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号