题目

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

  • s 由英文字母、数字、符号和空格组成

题解

方法1

参考热评题解:

  1. 创建数组用于记录字符上一次出现的位置
  2. beg变量用于记录无重复子串的开始位置,并保证窗口开端不会左移
class Solution {public int lengthOfLongestSubstring(String s) {int[] last = new int[128];  //记录字符上一次出现的位置for(int i = 0; i < 128; ++i) {last[i] = -1;}int len = s.length();int beg = 0;int res = 0;for(int i = 0; i < len; ++i) {int ch = s.charAt(i);beg = Math.max(beg, last[ch] + 1);  //"abba"res = Math.max(res, i - beg + 1);last[ch] = i;}return res;}
}

同理,利用HashMap记录字符出现的位置

class Solution {public int lengthOfLongestSubstring(String s) {HashMap<Character, Integer> hashMap = new HashMap<>();int res = 0, beg = 0;for(int i = 0; i < s.length(); ++i) {char ch = s.charAt(i);if(hashMap.containsKey(ch)) {beg = Math.max(beg, hashMap.get(ch) + 1);}res = Math.max(res, i - beg + 1);hashMap.put(ch, i);}return res;}
}

方法2

遍历字符串s,利用StringBuilder创建无重复字符的子串,并获取最长子串的长度

class Solution {public int lengthOfLongestSubstring(String s) {StringBuilder sb = new StringBuilder();int res = 0;for(int i = 0; i < s.length(); ++i) {String str = String.valueOf(s.charAt(i));int idx = sb.indexOf(str);  //str在sb中第一次出现位置的索引if(idx >= 0) {sb.delete(0, idx + 1);  //删除,左闭右开}sb.append(s.charAt(i));res = Math.max(sb.length(), res);}return res;}
}

【LC3】无重复字符的最长子串相关推荐

  1. 【leetcode】力扣刷题(3):无重复字符的最长子串(go语言)

    一.问题描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 " ...

  2. 刻意练习:LeetCode实战 -- Task16. 无重复字符的最长子串

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

  3. 【每日一算法】无重复字符的最长子串

    微信改版,加星标不迷路! 每日一算法 - 无重复字符的最长子串 思路答案 首先定义一个指针p指向该字符串的链头,然后通过p指针后的第i个字符是否和p指针后的第j个字符相同来取得最大长度.(也叫做完全遍 ...

  4. 汇编语言求无符号数组中出现的次数最多数_【今日最佳leecode通俗易懂】无重复字符的最长子串...

    相信看了这个标题的同学,对这道题以已经非常不陌生了,就是leecode当中的第三题,之所以要单独的写一写主要对我来说,里面涉及到有一个滑动窗口, 散列表, 字符编码等知识点比较重要,也有几个小技巧,这 ...

  5. 大二菜鸟———无重复字符的最长子串

    这是一枚大二菜鸟的成长反思博客   终于忍不住,在这六月将之的一天开始写起了博客.数据结构计算机算法杂七杂八学了一堆但是都只是浅尝,觉得还是要写博客反刍学习到的知识.   感谢大佬 @Java3y 的 ...

  6. 无重复最长子串python_leetCode 无重复字符的最长子串 python(Longest Substring Without Repeating Characters) python...

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. Default 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &quo ...

  7. 算法-------无重复字符的最长子串(Java版)

    题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc& ...

  8. python学习3. 无重复字符的最长子串(滑动窗口)

    makcooo 2019-04-19 15:47:32  271  收藏 分类专栏: python 版权 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: &quo ...

  9. 刷题练习记录(3)——无重复字符的最长子串(JAVA 和 Python)——set()函数/集合...

    [题号003]无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的 ...

  10. 【LeetCode】无重复字符的最长子串【滑动窗口法】

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...

最新文章

  1. 谁把20岁上下的你给洗脑了
  2. 【错误记录】Android 应用连接 BLE 设备无法读取数据 ( 可以写出数据 | 无法读取数据 )
  3. python输入字符串从大到小排列_567. 字符串的排列(Python)
  4. linux的swap增加的二个办法
  5. 1050 螺旋矩阵 (25 分
  6. vue如何获取tree当前选中的节点_vue中element-ui 树形控件-树节点的选择(选中当前节点,获取当前id并且获取其父级id)...
  7. transformer学习
  8. PyQt5-QComboBox控件使用实现省市级联效果
  9. docker安装awvs13
  10. Android布局之表格布局
  11. Firefox火狐浏览器配置about:config优化加速
  12. Photoshop学习心得
  13. Java爬虫之利用Jsoup+HttpClient爬取类叔叔不约匿名聊天网站的图片,未果——后爬取某网站美女图片案例
  14. ncre计算机职业英语,NCRE计算机职业英语一级考试样卷.doc
  15. 西门子200SMART(六)数据块
  16. 数据科学中的计量经济学技术
  17. (附源码)springboot中北创新创业官网 毕业设计 271443
  18. 陈菜根谈“为什么子弹短信会火?”
  19. Solr 之 Linux 安装 solr-8.10.1
  20. Spring5(一)

热门文章

  1. AI 理论之父出生 | 历史上的今天
  2. Unity之OpenXR+XR Interaction Toolkit接入HTC Vive
  3. 网易云的招股书,递交了几分情怀?
  4. skynet 框架snax源码分析----变量注入
  5. zookeeper面试专题
  6. HDFS v1.0学习笔记
  7. Ubuntu第三方软件仓库源(国内源)
  8. 该出手时就出手「深圳房价」基本上涨不跌
  9. Win10下音频设备无法播放音乐问题定位
  10. 0xc0000135应用程序无法正常启动解决办法