[LeetCode]无重复字符的最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 无重复字符的最长子串是"abc",其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 无重复字符的最长子串是"b",其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 无重复字符的最长子串是"wke",其长度为 3。
请注意,答案必须是一个子串,"pwke"是一个子序列 而不是子串。
解题思路
建立一个List或者Hashset也行,用来存储这个子串.用一个变量(我这里用temp)来存储子串的长度,然后用for循环遍历整个字符串,如果List当中有当前遍历到的字符,则将List当中的这个字符的位置找出来,将这个位置和这个位置之前的字符去除,然后将当前遍历的字符加入进去,如果List的长度大于temp,将List的长度赋值给temp,如果当中没有这个字符,则添加到List里面去,同样更新temp的值
值得注意:List中的remove方法要从大到小删除,否则容易报越界异常
代码:
class Solution {
    public int lengthOfLongestSubstring(String s) {
          if(s.length()==0)
               return 0;
            List<Character> list = new ArrayList<>();
           int temp = 0;
           char it;
           int loc = 0;
           for(int i = 0;i < s.length();i++) {
               it = s.charAt(i);
               if(list.contains(it)) {
                   loc = list.indexOf(it);
                   for(int j = loc; j >= 0;j--) {
                     list.remove(list.get(j));
                   }
                   list.add(it);
                   if(list.size()>temp) {
                       temp = list.size();
                   }
               }else {
                list.add(it);
                if(list.size()>=temp)
                temp = list.size();
            }
           }
           return temp;
    }
}
[LeetCode]无重复字符的最长子串的更多相关文章
- leetcode无重复字符的最长子串
		给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ... 
- LeetCode 无重复字符的最长子串(探索字节跳动)
		题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "a ... 
- leetcode 无重复字符的最长子串 python实现
		这道题需要借助哈希查找key的O(n) 时间复杂度, 否则就会超时 初始化一个 哈希表\字典 dic 头指针start 初始为0 当前指针 cur 初始为0 最大长度变量 l 初始为0 用cur变量 ... 
- Leetcode(三)无重复字符的最长子串
		3. 无重复字符的最长子串 题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最 ... 
- 【LeetCode题解】3_无重复字符的最长子串(Longest-Substring-Without-Repeating-Characters)
		目录 描述 解法一:暴力枚举法(Time Limit Exceeded) 思路 Java 实现 Python 实现 复杂度分析 解法二:滑动窗口(双指针) 思路 Java 实现 Python 实现 复 ... 
- 【LeetCode】Longest Substring Without Repeating Characters(无重复字符的最长子串)
		这道题是LeetCode里的第3道题. 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: ... 
- LeetCode Golang 3. 无重复字符的最长子串
		3. 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串 ... 
- Leetcode(3)无重复字符的最长子串
		Leetcode(3)无重复字符的最长子串 [题目表述]: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 第一种方法:暴力 执行用时:996 ms: 内存消耗:12.9MB 效果: ... 
- 【LeetCode】无重复字符的最长子串【滑动窗口法】
		给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc&quo ... 
随机推荐
- 安装配置ftp服务器
			1.安装ftp服务 检查是否安装vsftpd rpm -qa|grep vsftpd 安装 vsftpd yum -y install vsftpd 2.配置 编辑 文件 /etc/vsftpd/vs ... 
- Java数组的初始化
			1.动态初始化 数据类型 [] 变量名 = new 数据类型 [数组大小]; //数组的动态初始化 int [] arr = new int [3]; 2.静态初始化 数据类型 [] 变量名 = {元 ... 
- matlab 设定坐标比例
			figure() u=-0.1:0.005:0.1; v=-0.1:0.005:0.1; [x,y]=meshgrid(u,v); z=sin(x-y)./abs(x)+abs(y); surf(x, ... 
- 第21章:MongoDB-聚合操作--聚合管道--$geoNear
			①$geoNear 使用“$geoNear”可以得到附近的坐标点. ②范例:准备测试数据 
- 第12章:MongoDB-CRUD操作--文档--查询--游标详解
			①是什么游标 游标不是查询结果,可以理解为数据在遍历过程中的内部指针,其返回的是一个资源,或者说数据读取接口. 客户端通过对游标进行一些设置就能对查询结果进行有效地控制,如可以限制查询得到的结果数量. ... 
- 2.2.11同步synchronized方法无限等待与解决
			同步方法容易造成死循环. package com.cky.bean; /** * Created by edison on 2017/12/8. */ public class Service { s ... 
- 【python 字典、json】python字典和Json的相互转换
			[python 字典.json]python字典和Json的相互转换 dump/dumps字典转换成json load/loadsjson转化成字典 dumps.loads直接输出字符 dump.lo ... 
- Spring的两种代理JDK和CGLIB的区别浅谈
			一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. 而cglib动态代理是利用asm开源包,对代理对象类的class文件 ... 
- Codeforces822 B. Crossword solving
			B. Crossword solving time limit per test 1 second memory limit per test 256 megabytes input standard ... 
- 《计算机科学基础》学习笔记_Part 1 Computer and Data
			Technorati Tags: 计算机科学基础,读书笔记 Chapter 1. Introduction Ø 计算机:黑盒,Output Data=f(Input Data, Program) Ø ... 
