龙空技术网

3. 无重复字符的最长子串(leetcode 解题)

北漂码农 110

前言:

现时姐妹们对“java找到字符串最长子串”可能比较关心,朋友们都想要分析一些“java找到字符串最长子串”的相关知识。那么小编也在网摘上汇集了一些有关“java找到字符串最长子串””的相关资讯,希望大家能喜欢,姐妹们快快来学习一下吧!

直接上题:

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

示例 1:

输入: "abcabcbb"

输出: 3

解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: "bbbbb"

输出: 1

解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: "pwwkew"

输出: 3

解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。

请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

解题思路,遍历字符串,记录临时最大的连续不重复长度,遇到重复的,立刻舍弃第一次出现的重复字符串及他前面的字符串

参见java代码:

class Solution { public int lengthOfLongestSubstring(String s) { int length = 0; int max = 0; List list = new ArrayList<String>(); for (int i = 0; i < s.length(); i++) { String tmpChar = String.valueOf(s.charAt(i)); if (list.contains(tmpChar)) { length = 0; int index= list.indexOf(tmpChar); for(int j=0;j<index+1;j++){ list.remove(0); } } list.add(tmpChar); length = list.size(); if (max < length) max = length; } return max; }}

标签: #java找到字符串最长子串