day-25 无重复字符的最长子串

在这里插入图片描述

思路:动态规划的思想,遍历字符串,每遇到一个新的字符,将其存入HashMap中,并给其一个唯一值value(value递增),当前字符若与HashMap中的字符都不一样,则存入HashMap中,若已经存在,则将对应value小于当前字符value的字符全部删除,最后返回dp数组的最大值即可

注意点:for循环遍历HashMap时,若调用remove函数,HashMap.会立即重排

code:

class Solution {
    public int lengthOfLongestSubstring(String s) {
        if(s.length()==0)return 0;
Map<Character,Integer> map=new HashMap<Character,Integer>();
int dp[]=new int[s.length()];
dp[0]=1;
int total=1;
map.put(s.charAt(0),1);
for(int i=1;i<s.length();i++){
     if(map.getOrDefault(s.charAt(i),-1)==-1){
        dp[i]=dp[i-1]+1;
        total++;
        map.put(s.charAt(i),total);
    }else{
      total=total+1;
      List<Character> list=new ArrayList<>();
      dp[i]=total-map.get(s.charAt(i));
     for(char ch:map.keySet()){
         if(map.get(ch)<map.get(s.charAt(i))){
             list.add(ch);
         }
     }
     for(int j=0;j<list.size();j++){
         map.remove(list.get(j));
     }
      map.put(s.charAt(i),total);
    } 
}
Arrays.sort(dp);
return dp[s.length()-1];
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/476218.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

剑指offer经典题目整理(七)

一、经典dp——最大子数组之和 1.链接 53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 2.描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 3.思路 这是…

深入BEV感知中的魔鬼细节:综述、评估和秘诀

深入BEV感知中的魔鬼细节&#xff1a;综述、评估和秘诀 论文链接&#xff1a;https://arxiv.org/pdf/2209.05324.pdf 学习感知任务的鸟瞰图&#xff08;BEV&#xff09;中的强大表示法是一种趋势&#xff0c;并引起了工业界和学术界的广泛关注。大多数自动驾驶常规方法是在前…

力扣---子集---回溯(子集型回溯)---递归

递归法思路&#xff1a; 首先考虑为什么能用递归&#xff08;因为存在大问题和小问题之间的关系&#xff0c;大问题&#xff1a;从第 i 个数字到最后一个数字之间找子集&#xff0c;小问题&#xff1a;从第 i1 个数字到最后一个数字之间找子集&#xff09;。其次&#xff0c;用…

力扣hot100题解(python版81-90题)

81、爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶示…

如何正确看待竞争对手

很多人一天到晚的抱怨说实体经济不行啦&#xff0c;互联网经济也不行啦&#xff0c;我跟你说&#xff0c;抱怨没有用&#xff0c;你抱怨&#xff0c;这个时代是这样&#xff0c;不抱怨它也是这样&#xff0c;你抱怨&#xff0c;它也在&#xff0c;你不抱怨它还在。不是实体经济…

基于springboot+vue的毕业论文管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

基于SpringBoot的网上订餐系统

技术&#xff1a;springbootvuemysql 一、系统背景 随着我国经济的飞速发展&#xff0c;人们的生活速度明显加快&#xff0c;在餐厅吃饭排队的情况到处可见&#xff0c;近年来由于新兴IT行业的空前发展&#xff0c;它与传统餐饮行业也进行了新旧的结合&#xff0c;很多餐饮商户…

ensp不同vlan间的互相通信

关于不同vlan之间的通信&#xff0c;本章做了最简洁的案例&#xff0c;表示说明 1. 网段设置 1.1 划分四个不同 的 vlan vlan网段vlan10192.168.10.254 /24vlan20192.168.20.254 /24vlan30192.168.30.254 /24vlan40192.168.40.254 /24 1.2 SW1的配置 #进入视图 sys #更改交…

微调alpaca-lora遇到的一些问题

1、环境简介 环境&#xff1a; 系统&#xff1a;Ubuntu torch&#xff1a;2.2.1 python&#xff1a;3.10 gpu&#xff1a;V100 16g peft&#xff1a;0.9.0 使用PEFT中的lora方式微调llama-2-7b-hf&#xff0c;项目地址&#xff1a;alpaca-lora 2、混合精度训练Tensor相互计算会…

第十九章 TypeScript 装饰器Decorator

Decorator 装饰器是一项实验性特性&#xff0c;在未来的版本中可能会发生改变 它们不仅增加了代码的可读性&#xff0c;清晰地表达了意图&#xff0c;而且提供一种方便的手段&#xff0c;增加或修改类的功能 若要启用实验性的装饰器特性&#xff0c;你必须在命令行或tsconfig…

Springboot+vue的高校教师科研管理系统+数据库+报告+免费远程调试

项目介绍: Javaee项目&#xff0c;springboot vue前后端分离项目 本文设计了一个基于Springbootvue的前后端分离的高校教师科研管理系统&#xff0c;采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xf…

THM学习笔记—Bounty Hacker

nmap扫描&#xff0c;扫了一大堆但只有三个端口是开放的 试试ftp是否可以匿名登录 可以匿名登录&#xff0c;把里面的文件下载下来 查看里面的内容&#xff0c;猜lin为用户名&#xff0c;locks.txt为密码列表&#xff0c;使用hydra进行ssh登录。 找到密码了&#xff0c;进行ssh…

【Mybatis整合mysql之Json类型属性适配手把手】

【Mybatis整合mysql之Json类型属性适配&&手把手】 场景 JSON 数据类型是 MySQL 5.7.8 开始支持的。在此之前&#xff0c;只能通过字符类型&#xff08;CHAR&#xff0c;VARCHAR 、TEXT或LONGTEXT &#xff09;来保存 JSON 文档。在开发中发现&#xff0c;Mybatis查询…

AWS监控,AWS 性能监控工具

监控云部署的性能是 IT 环境正常运行的内在条件。AWS 云是一个架构良好的框架&#xff0c;管理员可以使用专用的AWS 性能监控工具增强服务的功能。执行AWS监视是为了跟踪在AWS环境中积极运行的应用程序工作负载和资源。AWS监视器跟踪各种AWS云指标&#xff0c;以帮助提高在其上…

电子证书查询系统如何制作证书?

1、制作空白证书&#xff1a;网上找一张证书背景图&#xff0c;用PPT工具或photoshop等图片处理工具&#xff0c;将证书上固定的文字打上&#xff0c;有公章的话贴上电子公章&#xff0c;不固定的内容留空白。 2、制作电子证书&#xff1a;上传前一步制作好的空白证书&#xf…

LeetCode刷题记录:(13)N皇后(难题不难)

leetcode传送通道 传说中的N皇后&#xff0c;不难&#xff0c;进来了就看完吧 注释序号代表鄙人写代码的顺序和思考逻辑&#xff0c;供参考 class Solution {// 1.定义结果数组List<List<String>> result new ArrayList<>();public List<List<String&…

moviepy简介及使用教程

moviepy简介及基本概念 MoviePy 是一个用于视频编辑的 Python 库&#xff0c;使用户能够处理、编辑和操作视频文件。这个库允许你剪辑视频、添加文本、合并视频剪辑&#xff0c;以及应用各种效果和转换。它建立在 NumPy、imageio 和 Decorator 等库的基础上&#xff0c;使得在…

部署mysql,前端,后端

部署mysql docker pull mysql 从镜像源中拉取镜像。 创建mysql容器 docker run -d \--name mysql_container \-p 3306:3306 \-e TZAsia/Shanghai \-e MYSQL_ROOT_PASSWORD123 \--restartalways \-v /opt/mysql:/var/lib/mysql \mysql -d后台运行&#xff0c;--name指定容器…

点餐小程序开发:如何通过抽奖与消费者互动

随着科技的发展&#xff0c;越来越多的商家开始使用点餐小程序来提升自己的服务质量和效率。然而&#xff0c;仅仅提供点餐服务并不能满足消费者的需求&#xff0c;他们还需要一种方式来增加与商家的互动&#xff0c;提高消费体验。抽奖活动就是一种非常有效的互动方式&#xf…

C++ stack和queue

什么是stack stack就是平常所说的栈&#xff0c;栈只能进行在固定的一端插入数据和删除数据的操作&#xff0c;也就是先进后出&#xff0c;后进先出 什么是queue queue是平常所说的队列&#xff0c;队列就像平常排队吃饭一样&#xff0c;先到的就有饭吃&#xff0c;只能从一端…