diff --git a/src/main/java/leetcode/editor/cn/LongestSubstringWithoutRepeatingCharacters.java b/src/main/java/leetcode/editor/cn/LongestSubstringWithoutRepeatingCharacters.java new file mode 100644 index 0000000..b3bb791 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/LongestSubstringWithoutRepeatingCharacters.java @@ -0,0 +1,87 @@ +//给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 +// +// +// +// 示例 1: +// +// +//输入: s = "abcabcbb" +//输出: 3 +//解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 +// +// +// 示例 2: +// +// +//输入: s = "bbbbb" +//输出: 1 +//解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 +// +// +// 示例 3: +// +// +//输入: s = "pwwkew" +//输出: 3 +//解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 +// 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 +// +// +// 示例 4: +// +// +//输入: s = "" +//输出: 0 +// +// +// +// +// 提示: +// +// +// 0 <= s.length <= 5 * 104 +// s 由英文字母、数字、符号和空格组成 +// +// Related Topics 哈希表 双指针 字符串 Sliding Window +// 👍 5579 👎 0 + +package leetcode.editor.cn; + +//3:无重复字符的最长子串 +public class LongestSubstringWithoutRepeatingCharacters { + public static void main(String[] args) { + //测试代码 + Solution solution = new LongestSubstringWithoutRepeatingCharacters().new Solution(); + } + + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) + class Solution { + public int lengthOfLongestSubstring(String s) { + if (s.length() <= 1) { + return s.length(); + } + int length = 1; + int count = 1; + int start = 0; + for (int i = 1; i < s.length(); i++) { + int index = s.substring(start, i).indexOf(s.substring(i, i + 1)); + if (index == -1) { + count++; + } else { + if (count > length) { + length = count; + } + count = i - index - start; + start = start + index + 1; + } + } + if (count > length) { + length = count; + } + return length; + } + } +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/LongestSubstringWithoutRepeatingCharacters.md b/src/main/java/leetcode/editor/cn/LongestSubstringWithoutRepeatingCharacters.md new file mode 100644 index 0000000..dda9048 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/LongestSubstringWithoutRepeatingCharacters.md @@ -0,0 +1,45 @@ +
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
+ ++ +
示例 1:
+ +
+输入: s = "abcabcbb"
+输出: 3
+解释: 因为无重复字符的最长子串是 "abc",所以其
长度为 3。
+
+
+示例 2:
+ +
+输入: s = "bbbbb"
+输出: 1
+解释: 因为无重复字符的最长子串是 "b"
,所以其长度为 1。
+
+
+示例 3:
+ ++输入: s = "pwwkew" +输出: 3 +解释: 因为无重复字符的最长子串是+ +"wke"
,所以其长度为 3。 + 请注意,你的答案必须是 子串 的长度,"pwke"
是一个子序列,不是子串。 +
示例 4:
+ ++输入: s = "" +输出: 0 ++ +
+ +
提示:
+ +0 <= s.length <= 5 * 104
s
由英文字母、数字、符号和空格组成