leetcode522. 最长特殊序列 II(java)

news/2025/2/12 4:07:41/

最长特殊序列

  • 题目描述
    • 枚举法
    • 代码演示

题目描述

难度 - 中等
leetcode522. 最长特殊序列 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] 只包含小写英文字母

在这里插入图片描述

枚举法

首先要搞明白,这道题是要干嘛的,题目很难理解,通俗点解释就是。
给出一个字符串数组,在里面找出字符串满足当前字符串不是字符串数组中其他字符串的子序列,返回满足条件的字符串中 最长的字符串的长度

看懂题目应该就不难了,其实就是比较一个字符串,是不是其他字符串的字串,找出所有满足条件的,然后取最长的做答案。
那么我们就需要两个循环,不断拿一个字符串和其他字符串去对比。对比时呢,可以用双指针的方式去判断。
即初始时指针 pti 和 ptj 分别指向两个字符串的首字符。如果两个字符相同,那么两个指针都往右移动一个位置,表示匹配成功;否则只往右移动指针 ptj,表示匹配失败。如果 pti​ 遍历完了整个字符串,就说明 str[i]是 str[j] 的子序列。
在所有满足要求的 str[i]中,我们选出最长的那个,返回其长度作为答案。如果不存在满足要求的字符串,那么返回 −1。

代码演示

  public int findLUSlength(String[] strs) {int ans = -1;int n = strs.length;for(int i = 0; i < n;i++){boolean check = true;for(int j = 0; j < n;j++){if(i != j && check(strs[i],strs[j])){check = false;break;}}if(check){ans = Math.max(ans,strs[i].length());}}return ans;}public boolean check(String s,String t){int sIndex = 0;int tIndex = 0;while(sIndex < s.length() && tIndex < t.length()){if(s.charAt(sIndex) == t.charAt(tIndex)){sIndex++;}tIndex++;}return sIndex == s.length();}public boolean isSubseq(String s, String t) {int ptS = 0, ptT = 0;while (ptS < s.length() && ptT < t.length()) {if (s.charAt(ptS) == t.charAt(ptT)) {++ptS;}++ptT;}return ptS == s.length();}

http://www.ppmy.cn/news/1116084.html

相关文章

深入探索图像处理:从基础到高级应用

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 图像处理是计算机视觉领…

C++:new 和 delete

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》 文章目录 前言一、C内存管理1.内置类型2.自定义类型3.delete 与 new不匹配使用问题(VS平台下) 二、operator new 与 operator delete函数三、 new 和delete的实现原理内置类型自定义类型 四…

使用Python进行RFM分析

RFM分析用于根据客户的购买行为来了解和细分客户。RFM代表最近一次消费 (Recency)、消费频率 (Frequency)和消费金额 (Monetary)&#xff0c;这是三个关键指标&#xff0c;可提供有关客户参与度、忠诚度和企业价值的信息。本文将带您完成使用Python进行RFM分析的任务。 RFM分析…

王道考研操作系统

王道考研操作系统 计算机系统概述操作系统的概念操作系统的特征操作系统的发展历程操作系统内核中断和异常![在这里插入图片描述](https://img-blog.csdnimg.cn/162452b4c60144e0bd500e180127c447.png)系统调用操作系统结构虚拟机错题 进程与线程进程控制进程通信线程和多线程模…

使用patch-package保存node_modules包修改

遇到情况&#xff0c;第三方包存在bug或者缺少文件时候&#xff0c;我们手动修改了某个包时候&#xff0c;下次npm安装时候会导致原来的修改呗覆盖 安装 这时候可以用到npm工具包patch-package&#xff0c;项目更目录命令行安装 npm i -D patch-package修改文件 修改好nod…

mysql知识大全

MySQL知识大全&#xff08;2&#xff09; MySqL 基础为1—7&#xff08;增删改查基础语法&#xff09;&#xff0c;MySQL进阶知识为8—11&#xff08;约束、数据库设计、多表查询、事务&#xff09; 1、数据库相关概念 以前我们做系统&#xff0c;数据持久化的存储采用的是文件…

升级:远程桌面软件玩游戏指南

你有没有遇到过这样的场景&#xff1a;你想玩一款特定的游戏&#xff0c;但却受到设备功能的限制&#xff1f;这就是游戏远程桌面的概念变得非常宝贵的地方。从本质上讲&#xff0c;它允许您远程利用高端游戏计算机的功能&#xff0c;使您能够在自己的设备上玩游戏。 可以考虑…

全网最全Kettle教程-Kettle概述

文章目录 第一章 Kettle概述1.1 Kettle发展历程1.2 Kettle简介1.3 Kettle相关俗语1.4 Kettle设计与组成1.5 Kettle功能模块1.6 Kettle的执行Transformation&#xff08;转换&#xff09;1.7 Kettle商业和社区版区别1.8 数据集成与ETL1.9 ETL工具比较 第一章 Kettle概述 1.1 Ke…