LeetCode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
题目描述
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。
给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。
给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列  而不是子串。
解题思路
采用双指针的思想,维护两个指针i、j,i为无重复子串的右端点,j为无重复子串的左端点,这样此子串的长度为i-j+1.再用哈希的思想维护一个大小为128的数组,其下标代表ASCII码共128个字符,下标对应的值记录当前字符最后一次出现位置的后一个位置。这样做的目的是在子串中遇到重复的字符时,下一个无重复子串一定不包含左边的重复字符,所以直接从左边重复字符的后一个位置继续寻找。令哈希数组初始全为0,这样i每次向后走一步,
- 若i指向的字符在j~i-1的字符串中出现,即哈希数组中当前字符下标对应位置大于j,则j指向左边重复字符的后一个位置,否则j不动
- 接着计算当前无重复子串的长度并更新最大长度
- 最后修改哈希数组,使当前字符下标对应值为当前位置+1
代码
 class Solution {
 public:
     int lengthOfLongestSubstring(string s) {
         int idx[] = {};
         int maxLen = ;
         for(int i = , j = ; i < s.size(); i++){
             j = max(idx[s[i]], j);
             maxLen = max(i-j+, maxLen);
             idx[s[i]] = i+;
         }
         return maxLen;
     }
 };
LeetCode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)的更多相关文章
- LeetCode 3: 无重复字符的最长子串	Longest Substring Without Repeating Characters
		题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. Given a string, find the length of the longest substring withou ... 
- [Swift]LeetCode3. 无重复字符的最长子串 | Longest Substring Without Repeating Characters
		Given a string, find the length of the longest substring without repeating characters. Examples: Giv ... 
- Leetcode(三)无重复字符的最长子串
		3. 无重复字符的最长子串 题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最 ... 
- 【LeetCode】无重复字符的最长子串【滑动窗口法】
		给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc&quo ... 
- [LeetCode] 3. 无重复字符的最长子串
		题目链接:(https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/) 题目描述: 给定一个字符 ... 
- 【leetcode 3. 无重复字符的最长子串】解题报告
		思路:滑动窗口的思想 方法一:滑动窗口 int lengthOfLongestSubstring(string s) { /* 控制一个滑动窗口,窗口内的字符都是不重复的,通过set可以做到判断字符是 ... 
- Leetcode——3. 无重复字符的最长子串
		难度: 中等 题目 Given a string, find the length of the longest substring without repeating characters. 给定一 ... 
- 力扣Leetcode 3. 无重复字符的最长子串
		无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串 ... 
- [LeetCode]3. 无重复字符的最长子串(滑动窗口)
		题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc ... 
- [LeetCode]3.无重复字符的最长子串(Java)
		原题地址: longest-substring-without-repeating-characters/submissions 题目描述: 示例 1: 输入: s = "pwwkew&qu ... 
随机推荐
- iis 8.0 HTTP 错误 404.3 server 2012
			最近在学习WCF,发现将网站WCF服务放到IIS上时不能正常运行,从网上搜了一下: 解决方法,以管理员身份进入命令行模式,运行: "%windir%\Microsoft.NET\Framew ... 
- tf.strided_slice函数
			在keras_yolo中model函数下的yolo_head下:grid_shape = K.shape(feats)[1:3] grid_shape: <tf.Tensor 'strided_ ... 
- 帝国cms 重置用户名和密码
			5.1至7.0版本:用phpmyadmin修改phome_enewsuser表里的记录:把password字段的值设为:“322d3fef02fc39251436cb4522d29a71”:把salt ... 
- Java定义栈结构,实现入栈、出栈操作
			package com.example.demo; import java.util.ArrayList; public class Stack { ArrayList<Object> l ... 
- Delphi MaskEdit 组件
- 25、Nginx常见典型故障
			1.为什么nginx里面有的是浏览器渲染出的页面,有的时候就变成下载文件? 这个一个取决于服务端nginx,一个取决于你浏览器.在Nginx服务端的配置文件目录下,有一个mime.types 文件,内 ... 
- mysql总结1
			修改表名:alter table table_name rename new_table_name; 添加字段:alter table table_name add column_name type_ ... 
- BZOJ 3876 统一下界上下界费用流
			//Mcmf LargeDumpling #include<iostream> #include<cstdio> #include<cstdlib> #includ ... 
- uestc summer training #2
			A 增广 #include<bits/stdc++.h> using namespace std; + ; vector<int> g[MAXN]; int a[MAXN], ... 
- cyopen注释掉导入的动态函数
			cyopen注释掉导入的动态函数 cyopen注释掉导入的动态函数 cyopen注释掉导入的动态函数 
