题目描述
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1
输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2
输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3
输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
题解 1
class Solution { public int lengthOfLongestSubstring(String s) { char[] chars = s.toCharArray(); int max = 0; if (chars.length == 0) { return 0; } else if (chars.length == 1) { return 1; } //重复的坐标 int len = 0; // 外层for循环 用来计算总长 int j ; //内层for循环 用来计算总长 int k; for (j=0; j< j - len + 1? j - len + 1: max; } return max; }}
题解 2
class Solution { public int lengthOfLongestSubstring(String s) { int len = s.length(); if (len == 0 || len == 1) { return len; } Listlist; int n = 0; for (int i = 0; i < len; i++) { list = new ArrayList<>(); for (int j = i; j < len; j++) { if (!list.contains(s.charAt(j))) { list.add(s.charAt(j)); n = n > j - i + 1? n : j - i + 1; } else { break; } } } return n; }}
手记
一道值得品味的题。同样是遍历,但是 题解 1 要比 题解 2快上不少。双层for 循环的部分,值得用心分析。
猴急
做题不要像这个小标题
以上