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

news2024/11/24 19:42:43

最长特殊序列

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

题目描述

难度 - 中等
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.coloradmin.cn/o/1022721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STM32】IWDG—独立看门狗

基于stm32f103 基于《零死角玩转STM32—F103指南者》 一个12bit的递减计数器 STM32 有两个看门狗&#xff0c;一个是独立看门狗另外一个是窗口看门狗&#xff0c;独立看门狗号称宠物狗&#xff0c;窗口看门狗号称警犬。 独立看门狗是一个 12 位的递减计数器&#xff0c;当计…

数字孪生:助力机载软件构型管理

飞机机载软件具有研发周期长、版本更新频繁、相关工程资料密集等特性。由于各个系统的软件分别由不同供应商开发&#xff0c;其设计保障等级、设计架构、实现方法等方面都各有不同&#xff0c;对机载软件进行高效、规范的构型管理显得尤为重要。 Q&#xff1a;什么是构型管理&…

【张兔兔送书第一期:考研必备书单】

考研书单必备 《数据结构与算法分析》《计算机网络&#xff1a;自顶向下方法》《现代操作系统》《深入理解计算机系统》《概率论基础教程&#xff08;原书第10版》《线性代数&#xff08;原书第10版&#xff09;》《线性代数及其应用》赠书活动 八九月的朋友圈刮起了一股晒通知…

Idea新建项目配置Java3D 环境配置

&#xff08;一&#xff09;JDK配置 安装包的下载&#xff1a;1.可以去官网&#xff1a;JDK下载&#xff0c;进入官网页面Java Downloads | Oracle&#xff0c;然后点击Download Java。2.搜博客&#xff0c;可能会内含安装包链接。 ​ 2.在这个界面可以选择我们要安装的版本…

IEEE802.2之LLC(逻辑链路控制)

一、概念 IEEE 802.2 是一种用于局域网&#xff08;LAN&#xff09;和都会区域网&#xff08;MAN&#xff09;的数据链路层逻辑链路控制&#xff08;LLC&#xff09;的标准。它是 IEEE 802 系列标准中的一个组成部分&#xff0c;专门用于定义如何在数据链路层内进行帧的多路复用…

按摩软件仿东郊到家系统开发,上门预约系统;

按摩软件仿东郊到家系统开发&#xff0c;上门预约系统&#xff1b; 用户端、技师端、商家端&#xff0c;以及管理后台。上门预约的操作 1、技师管理。 技师满意度进行统一跟踪评估&#xff0c;进行分级管理&#xff0c;分级评估&#xff1b; 2、订单管理。 按订单状态分类筛选&…

Vue3动态显示时间

使用的是moment.js插件 关键字 vue3的 onMounted 和 onBeforeUnmount 声明周期 一个用来创建 一个用来销毁 创建什么呢? setInterval 函数 销毁时使用时 clearInterval清除定时器 1上代码 function formatTime() {const date moment();const year date.year();const m…

【STM32】SDIO—SD 卡读写01

基于stm32f103 基于零死角玩转STM32—F103指南者 简介 1.SD 卡总共有 8 个寄存器&#xff0c;用于设定或表示 SD 卡信息。 2.SD卡的寄存器不能像STM32那样访问&#xff0c;而是利用命令访问&#xff0c;SDIO 定义了 64 个命令。SD 卡接收到命令后&#xff0c;根据命令要求对…

今天的消费情况

1、今天消费1710元 意外险 住院--集中参保 校---******----服 1220 rmB lunch 240Rmb

若依前端使用

初始化页面时&#xff0c;路由上加参数 多个菜单对应一个页面&#xff0c;默认查询的数据状态不一样 vue 页面上 通过 debugger; 查看所有的参数&#xff0c; 最后取到了

【Android知识笔记】FrameWork中的设计模式

一、FrameWork中有哪些设计巧妙之处 例如: Binder调用,模糊进程边界: 屏蔽跨进程IPC通信的细节,让开发者把精力放在业务上面,无需关心进程之间的通信。Bitmap大图传输,高性能: 只传递Binder句柄,到目标进程后做内存映射,不用做大量数据拷贝,速度非常快。Zygote创建进…

想要定制一个自己的ChatGPT?三步就可以搞定!

2022年底ChatGPT上线&#xff0c;短短两个月用户就超过一亿&#xff0c;成为了人工智能界当之无愧的超级大网红。ChatGPT凭借着自身强大的拟人化及时应答能力迅速破圈&#xff0c;引起了各行各业的热烈讨论。简单来说ChatGPT就是可以基于用户文本输入自动生成回答的AI聊天机器人…

数据结构——KD树

KD树&#xff08;K-Dimensional Tree&#xff09;是一种用于多维空间的二叉树数据结构&#xff0c;旨在提供高效的数据检索。KD树在空间搜索和最近邻搜索等问题中特别有用&#xff0c;允许在高维空间中有效地搜索数据点。 重要性质 1.分割K维数据空间的数据结构 2.是一颗二叉树…

中期科技:智慧公厕是智慧城市管理智慧化的至佳表现

智慧公厕&#xff0c;作为智慧城市建设的一部分&#xff0c;正逐渐成为城市管理的新标杆。它不仅为城市居民提供便利&#xff0c;还深刻地改善了城市管理的效率。如中期科技「智慧公厕-智慧厕所」通过运用先进的科技手段&#xff0c;智慧公厕在优化城市管理、提升城市服务、促进…

电巢科技出席第26届西北地区电子技术与线路课程教学改革研讨会,聚焦一流课程建设!

2023年9月15日至17日&#xff0c;北方民族大学召开第26届西北地区电子技术与线路课程教学改革研讨会。本次会议围绕“梳理课程教学内容&#xff0c;改革教学方式&#xff0c;探索虚拟教研室构建方式&#xff0c;完善基层教学组织&#xff0c;推进一流课程和一流教材资源共享&am…

ip地址与网络上的其他地址有冲突吗?

ip地址相当于是计算机的号码。ip地址与网络上的其他ip地址有冲突是局域网ARP病毒攻击导致的。 ARP&#xff0c;即地址解析协议&#xff0c;实现通过IP地址得知其物理地址。 arp协议是TCP/IP协议组的一个协议&#xff0c;用于进行把网络地址翻译成物理地址(又称MAC地址)。arp病毒…

密码学【对称加密-DES\AES】

前言 在密码学中&#xff0c;加密算法分为双向加密和单向加密。单向加密包括MD5、SHA等摘要算法&#xff0c;它们是不可逆的。双向加密包括对称加密和非对称加密&#xff0c;对称加密包括AES加密、DES加密等。双向加密是可逆的&#xff0c;存在密文的密钥。AES算法是DES算法的替…

7.1、如何理解Flink中的时间语义

目录 1、如何理解Flink中的时间语义 2、实时计算时&#xff0c;应该如何选择时间语义&#xff1f; 3、时间语义与窗口的关系 1、如何理解Flink中的时间语义 flink作为流式计算引擎&#xff0c;提供了 两种时间语义 来对流式数据进行计算 事件时间(EventTime) : 事件产生的…

【架构篇】Supabase架构和功能介绍

Supabase是什么 Supabase将自己定位为Firebase的开源替代品&#xff0c;提供了一套工具来帮助开发者构建web或移动应用程序。Supabase是建立在Postgres之上的&#xff0c;Postgres是一个免费的开源数据库&#xff0c;被认为是世界上最稳定、最先进的数据库之一。Supabase对标F…

ValueError: Index contains duplicate entries,cannot reshape

项目场景&#xff1a; python-dataframe 在对行转列的时候出现 ValueError: Index contains duplicate entries,cannot reshape 问题描述 dataframe官方文档 # 为什么报错 是因为 index 和 columns 有重复值 df df.drop_duplicates(subset[foo,bar],keepfrist) df.pivot(i…