【LC3】无重复字符的最长子串
题目
给定一个字符串 s,请你找出其中不含有重复字符的最长子串的长度。
- s 由英文字母、数字、符号和空格组成
题解
方法1
参考热评题解:
- 创建数组用于记录字符上一次出现的位置
- 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】无重复字符的最长子串相关推荐
- 【leetcode】力扣刷题(3):无重复字符的最长子串(go语言)
一.问题描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 " ...
- 刻意练习:LeetCode实战 -- Task16. 无重复字符的最长子串
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...
- 【每日一算法】无重复字符的最长子串
微信改版,加星标不迷路! 每日一算法 - 无重复字符的最长子串 思路答案 首先定义一个指针p指向该字符串的链头,然后通过p指针后的第i个字符是否和p指针后的第j个字符相同来取得最大长度.(也叫做完全遍 ...
- 汇编语言求无符号数组中出现的次数最多数_【今日最佳leecode通俗易懂】无重复字符的最长子串...
相信看了这个标题的同学,对这道题以已经非常不陌生了,就是leecode当中的第三题,之所以要单独的写一写主要对我来说,里面涉及到有一个滑动窗口, 散列表, 字符编码等知识点比较重要,也有几个小技巧,这 ...
- 大二菜鸟———无重复字符的最长子串
这是一枚大二菜鸟的成长反思博客 终于忍不住,在这六月将之的一天开始写起了博客.数据结构计算机算法杂七杂八学了一堆但是都只是浅尝,觉得还是要写博客反刍学习到的知识. 感谢大佬 @Java3y 的 ...
- 无重复最长子串python_leetCode 无重复字符的最长子串 python(Longest Substring Without Repeating Characters) python...
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. Default 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &quo ...
- 算法-------无重复字符的最长子串(Java版)
题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc& ...
- python学习3. 无重复字符的最长子串(滑动窗口)
makcooo 2019-04-19 15:47:32 271 收藏 分类专栏: python 版权 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: &quo ...
- 刷题练习记录(3)——无重复字符的最长子串(JAVA 和 Python)——set()函数/集合...
[题号003]无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的 ...
- 【LeetCode】无重复字符的最长子串【滑动窗口法】
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...
最新文章
- 谁把20岁上下的你给洗脑了
- 【错误记录】Android 应用连接 BLE 设备无法读取数据 ( 可以写出数据 | 无法读取数据 )
- python输入字符串从大到小排列_567. 字符串的排列(Python)
- linux的swap增加的二个办法
- 1050 螺旋矩阵 (25 分
- vue如何获取tree当前选中的节点_vue中element-ui 树形控件-树节点的选择(选中当前节点,获取当前id并且获取其父级id)...
- transformer学习
- PyQt5-QComboBox控件使用实现省市级联效果
- docker安装awvs13
- Android布局之表格布局
- Firefox火狐浏览器配置about:config优化加速
- Photoshop学习心得
- Java爬虫之利用Jsoup+HttpClient爬取类叔叔不约匿名聊天网站的图片,未果——后爬取某网站美女图片案例
- ncre计算机职业英语,NCRE计算机职业英语一级考试样卷.doc
- 西门子200SMART(六)数据块
- 数据科学中的计量经济学技术
- (附源码)springboot中北创新创业官网 毕业设计 271443
- 陈菜根谈“为什么子弹短信会火?”
- Solr 之 Linux 安装 solr-8.10.1
- Spring5(一)