当前位置: 首页 > article >正文

力扣--LCR 167.招式拆解I

题目

某套连招动作记作序列 arr,其中 arr[i] 为第 i 个招式的名字。请返回 arr 中最多可以出连续不重复的多少个招式。

示例 1:

输入:arr = “dbascDdad”
输出:6
解释:因为连续且最长的招式序列是 “dbascD” 或 “bascDd”,所以其长度为 6。

示例 2:

输入:arr = “KKK”
输出:1
解释:因为无重复字符的最长子串是 “K”,所以其长度为 1。

示例 3:

输入:arr = “pwwkew”
输出:3
解释:因为连续且最长的招式序列是 “wke”,所以其长度为 3。
请注意区分 子串 与 子序列 的概念:你的答案必须是 连续招式 的长度,也就是 子串。而 “pwke” 是一个非连续的 子序列,不是 子串。

提示:

0 <= arr.length <= 40000
arr 由英文字母、数字、符号和空格组成。

代码

class Solution {
// public int lengthOfLongestSubstring(String s) {
// if(s == null || s.length() <= 0){
// return 0;
// }
// // 优化 => 单个变量
// Map<Character,Integer> map = new HashMap<>();
// int[] dp = new int[s.length()];
// dp[0] = 1;
// map.put(s.charAt(0), 0);
// int res = 1;
// for(int i = 1; i < s.length(); i++){
// if(!map.containsKey(s.charAt(i))){
// dp[i] = dp[i-1] + 1;
// }else{
// int k = map.get(s.charAt(i));
// dp[i] = i - k <= dp[i-1] ? i - k : dp[i-1] + 1;
// }
// res = Math.max(res, dp[i]);
// map.put(s.charAt(i), i);
// }

//     return res;
// }

// 优化版本
public int lengthOfLongestSubstring(String s) {
    if(s == null || s.length() <= 0){
        return 0;
    }
    // 优化 => 单个变量
    Map<Character,Integer> map = new HashMap<>();
    //int[] dp = new int[s.length()];
    int a = 1;
    map.put(s.charAt(0), 0);
    int res = 1;
    for(int i = 1; i < s.length(); i++){
        if(!map.containsKey(s.charAt(i))){
            a = a + 1;// 就是没有刷新 a 之前,a表示dp[i-1]
        }else{
            int k = map.get(s.charAt(i));
            a = i - k <= a ? i - k : a + 1;
        }
        res = Math.max(res, a);
        map.put(s.charAt(i), i);
    }

    return res;
    // 时间On,空间On
}

}


http://www.kler.cn/a/464991.html

相关文章:

  • 学习路之VScode--自定义按键写注释(插件)
  • 【面试】后端开发面试中常见数据结构及应用场景、原理总结
  • SpringCloud源码分析-nacos与eureka
  • Python 链接 Pcomm
  • Cause: java.sql.SQLException: sql injection violation, comment not allow异常问题处理
  • 【开源免费】基于SpringBoot+Vue.JS保密信息学科平台(JAVA毕业设计)
  • LeetCode7. 整数反转
  • 基于物联网的冻保鲜运输智能控制系统
  • MySQL实用SQL示例
  • 利用Java爬虫获取亚马逊国际按关键字搜索商品的实践指南
  • SQL偏移类窗口函数—— LAG()、LEAD()用法详解
  • Leetcode 从前序与中序遍历序列构造二叉树
  • B端UI设计规范是什么?
  • 汽车驾校转型做无人机执照培训详解, “驾” 起无人机培训新未来?
  • 大模型LLM-MMOE
  • leetcode 2658. 网格图中鱼的最大数目
  • 【20250101】Nature正刊:纯仿真强化学习得到外骨骼机器人的自适应控制策略
  • 深入浅出:Spring Boot 自定义消息转换器的实现与应用
  • 【单片机】NPN+PNP组成的高边开关无法完全关断
  • SpringBoot与Vue实现WebSocket心跳机制
  • 华为数通考试模拟真题(附带答案解析)题库领取
  • GAN对抗生成网络(二)——算法及Python实现
  • 多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测
  • C# 设计模式(行为型模式):责任链模式
  • 分布式微服务项目___某污水处理项目
  • Cornerstone3D:快速搭建可以读取本地文件且四视图显示的Nifti Viewer