首页 > 编程语言 >给定一个字符串,用java代码找出其中不含有重复字符的最长子串的长度

给定一个字符串,用java代码找出其中不含有重复字符的最长子串的长度

时间:2023-05-15 19:56:45浏览次数:38  
标签:子串 map java charAt 字符 int 给定 ans

public int lengthOfLongestSubstring(String s) {
    int n = s.length(), ans = 0;
    Map<Character, Integer> map = new HashMap<>();
    for (int i = 0, j = 0; j < n; j++) {
        if (map.containsKey(s.charAt(j))) {
            i = Math.max(map.get(s.charAt(j)), i);
        }
        ans = Math.max(ans, j - i + 1);
        map.put(s.charAt(j), j + 1);
    }
    return ans;
}

  1. 定义两个指针 i 和 j,分别表示子串的左右边界
  2. 使用一个哈希表来记录每个字符最后一次出现的位置
  3. 不断移动右指针 j,同时更新左指针 i 的位置,直到找到一个不含有重复字符的子串为止
  4. 在这个过程中,使用哈希表来快速判断是否有重复字符
  5. 最后返回最长子串的长度。
    这段代码的时间复杂度为 O(n),其中 n 是字符串的长度。

标签:子串,map,java,charAt,字符,int,给定,ans
From: https://www.cnblogs.com/18sui/p/17402882.html

相关文章

  • Java并发(六)----线程start、run、state方法
    1、start与run调用runpublicstaticvoidmain(String[]args){  Threadt1=newThread("t1"){    @Override    publicvoidrun(){      log.debug(Thread.currentThread().getName());//打印线程名称      FileRe......
  • Java并发(五)----线程常见方法总结
    常见方法方法名static功能说明注意start() 启动一个新线程,在新的线程运行run方法中的代码start方法只是让线程进入就绪,里面代码不一定立刻运行(CPU的时间片还没分给它)。每个线程对象的start方法只能调用一次,如果调用了多次会出现IllegalThreadStateException......
  • 4、HDFS-java操作类HDFSUtil及junit测试(HDFS的常见操作以及HA环境的配置)
    目录Hadoop系列文章目录一、pom.xml二、junit测试类三、操作类(帮助类)四、高可用环境的操作类本文编写了java对HDFS的常见操作,并且均测试通过。其功能包含构造conf、设置系统环境变量、创建目录、判断文件是否存在、获取文件/目录的大小等,具体见下图。本文分为四部分,即pom.xml、ju......
  • 5、zookeeper的java -Curator(服务注册与发现)
    目录Zookeeper系列文章目录一、知识介绍1、ServiceInstance2、ServiceProvider3、ServiceDiscovery1)、注册/注销服务2)、查询服务3)、服务缓存二、示例11、pom.xml2、ServiceInstance3、ServiceProvider及ServiceDiscovery4、注册服务的添加、删除、查询5、验证示例1三、示例21、Ins......
  • 4、zookeeper的java三种客户端介绍-Curator(crud、事务操作、监听、分布式计数器、分布
    目录Zookeeper系列文章目录一、zookeeper原生JavaAPI二、ZkClient三、Apachecurator1、pom.xml2、定义常量类3、连接实例化4、事务操作示例5、CRUD示例6、监听示例7、计数器示例1)、单机原子自增性实现1、Synchronized示例2、Lock示例3、AtomicInteger示例2)、分布式线程安全原子......
  • java数组去重_JAVA数组去重常用方法
    java数组去重_JAVA数组去重常用方法发布于 2022-09-1017:18:356950举报大家好,又见面了,我是你们的朋友全栈君。packagecom.zxj.test;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.HashMap;importjava.util.List;importjava.util.......
  • Java对象和json对象
    java对象和json对象转换接口classPersion1{@SerializedName("name")@ExposeStringname;publicvoidsetName(Stringname){this.name=name;}@OverridepublicStringtoString()......
  • java.lang.IllegalArgumentException: Illegal URL:
    问题描述: java.lang.IllegalArgumentException:IllegalURL:翻译为:IllegalArgumentException:非法网址:原因:网址错误,网址前面加http:// 后面加/ ;(如下图) ......
  • ChatGPT Plugin开发setup - Java(Spring Boot) Python(fastapi)
    记录一下快速模板,整体很简单,如果不接auth,只需要以下:提供一个/.well-known/ai-plugin.json接口,返回openAI所需要的格式提供openAPI规范的文档CORS设置其他的和普通的web开发类似.本地开发就直接使用localhost即可,前几天官方localhost无法联通,最近应该修复了.要让GPT......
  • 将java开发环境装入linux系统
    使用该指令下载jdkwgethttps://dragonwell.oss-cn-shanghai.aliyuncs.com/8.6.6/Alibaba_Dragonwell_8.6.6_x64_linux.tar.gz使用 tarxf+文件名 解压文件tarxfAlibaba_Dragonwell_8.6.6_x64_linux.tar.gz配置环境变量vim/etc/profile 打开环境变量文件exportJAV......