首页 > 编程语言 >剑指 Offer 48. 最长不含重复字符的子字符串 java

剑指 Offer 48. 最长不含重复字符的子字符串 java

时间:2023-09-01 21:33:57浏览次数:55  
标签:子串 字符 set java 48 Offer res 示例 最长

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。

示例 1:

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

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

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

提示:

s.length <= 40000 注意:本题与主站 3 题相同:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

    public int lengthOfLongestSubstring(String s) {
        int res = 0;
        Set<Character> set = new HashSet<>();
        for(int l = 0, r = 0; r < s.length(); r++) {
            char c = s.charAt(r);
            while(set.contains(c)) {
                set.remove(s.charAt(l++));
            }
            set.add(c);
            res = Math.max(res, r - l + 1);
        }

        return res;
    }
}

标签:子串,字符,set,java,48,Offer,res,示例,最长
From: https://blog.51cto.com/u_15862486/7326337

相关文章

  • java基础-流程控制-day04
    目录1.if单分支2.ifelse多分支3.ifelse双分支4.随机生成一定区间的整数5switch1.if单分支publicclassTestIf01{ publicstaticvoidmain(String[]args){ //对三个数(1-6)求和 intnum1=6; intnum2=6; intnum3=5; intsum=0; sum+=nu......
  • 剑指 Offer 14- II. 剪绳子 II(中等)
    题目:classSolution{//本题用贪心算法,拆成尽可能多的3且不可以出现长度为1的小段。用dp会溢出,放弃吧public:intcuttingRope(intn){if(n==2)return1;if(n==3)return2;if(n==4)return4;longlongres=1;......
  • 【2023年下半年Java开发行情预测】
    2023年下半年Java开发行情预测,需要考虑多种因素,包括市场需求、技术发展趋势、人才供需关系等。以下是我对Java开发行情的一些预测:市场需求将继续保持增长:随着数字化转型的加速,许多企业需要将业务迁移到云端,这将导致对Java开发人员的需求增加。此外,Java作为一门流行的编程语言,其需......
  • java拷贝对象列表List copyProperties
    <!--hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.0.6</version></dependency>/***@Author:Fcx*@Date:2019/11/2020:45*@Versio......
  • java线程的ThreadLocal是线程变量
    java线程的localThread是线程局部变量,只能在线程内访问,方法有getsetremove.证明localThread只能在线程内访问的方法,在control层设置一个ThreadLocal,然后在service可以访问到ThreadLocal设置的值,另外就是浏览器的一次请求就是一个线程的请求.......
  • JavaScript—函数
    函数的概念在js里面,可能会定义非常多的相同代码或功能相似的代码,这些代码需要大量重复地使用。函数就是封装了一段可被重复调用的代码块。通过代码块实现大量代码的重复使用。函数示例//常规方法varsum=0;for(vari=1;i<=100;i++){sum+=......
  • JavaScript—节点
    节点的概念节点:网页中的所有内容都是节点,例如标签、属性、文本、注释、回车、换行、空格等。节点属性:可以用标签--元素.出来,可以使用属性节点.出来,文本节点.点出来。nodeType:节点的类型:1-标签DIV-12-属性:class3-文本:innerTextnodeName:节点的名字:标签节点-大写的......
  • ETM5900谈谈用java处理excel问题
    ETM5900  Assignment1Question1[Total23Marks]Agroupofresearchersareinterestedinstudyingtheprevalenceofobesity,diabetes,andothercardiovascularriskfactorsinSubangJaya,Selangor.Togainmoreinsightintothisquestion,1150subjectswe......
  • JavaScript—DOM
    传统获取方式传统方式元素获取方式<bodyclass="mybody"><inputtype="button"value="点击"id="btn"><divid="dv1"name="mydiv"class="cls"><p>111</p>......
  • JavaScript—BOM
    概念BOM(BrowserObjectModel)是指浏览器对象模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的window对象是BOM的顶层对象,其他对象都是该对象的子对象。我们在浏览器中的一些操作都可以使用BdM的方式进行编程......