博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
阅读量:2116 次
发布时间:2019-04-30

本文共 1477 字,大约阅读时间需要 4 分钟。

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。

示例 2:

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

示例 3:

输入: “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。

解题思路:

1. 子串: 串中任意个连续的字符组成的子序列称为该串的子串。
2. 关键是在找子串的起始点,需要考虑当前字符已经存在于构建的字典时,需要重置起点,但实际上正在遍历的淅川不包含当前的字符,所以需要考虑起始点移动时不能后退。

第一种:采用map

代码:

public static int lengthOfLongestSubstring(String s){    int fs = 0;//用于存取最后要返回的长度    //1.创建一个map,key:字符,value: 字符下标  `    Map
map = new HashMap<>();    //2.遍历字符串,并将字符串存入map中    for (int start = 0,end = 0; end < s.length(); end++) {        char ch = s.charAt(end);        if (map.containsKey(ch)){ //若已经存在于map中,则将其对应的value拿出来            start = Math.max(map.get(ch),start);        }        // 取较大值        fs = Math.max(fs,end - start +1);        //存入map中        map.put(ch,end + 1);    }    return fs;}

第二种:

1.创建辅助数组,长度为128,并将传入的字符串的每个字符作为辅助数组的下标,然后分别赋上1 2 3 …
即: abcabcbb ,a对应的ASCII是 97,则map[97] = 1

public static int lengthOfLongestSubstring_2(String s ){    int fa = 0;    int n = s.length();    int [] map = new int[128];    char [] ch = s.toCharArray();    for (int j = 0, i = 0; j < n; j++) {       //取较大值并赋值给 i,找到对应map数组下标对应的值,和 i 值比较        i = Math.max(map[ch[j]],i);       //字符串的长度等于最后一个字符的下标 - 最前面一个字符的下标         fa = Math.max(fa,j-i+1);         map[ch[j]] = j + 1; //以字符作为map数组的下标,并给对应的下标赋值    }    return fa;}

原文链接:https://blog.csdn.net/qq_35078688/article/details/105612892

你可能感兴趣的文章
高可用架构-- MySQL主从复制的配置
查看>>
jvm调优-从eclipse开始
查看>>
构建微服务:Spring boot 入门篇
查看>>
jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
查看>>
Spring boot Myibatis
查看>>
spring boot(七):springboot+mybatis多数据源最简解决方案
查看>>
Spring Boot 笔记
查看>>
maven下手动导入ojdbc6.jar
查看>>
SpringBoot、MyBatis配置多数据源XML方法
查看>>
SpringBoot配置属性之MQ
查看>>
SpringBoot集成mybatis
查看>>
Shell文本处理三剑客之grep
查看>>
linux查看进程启动时间
查看>>
Linux 基础命令
查看>>
35 个 Java 代码性能优化总结
查看>>
Linux Sed 命令
查看>>
StandardContext 错误
查看>>
如何添加网站favicon.ico图标
查看>>
cvs no such repository 问题
查看>>
MySQL中REGEXP正则表达式
查看>>