From cc218a79622ca18eebbc485c19c7c0b86d0a43c6 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Mon, 7 Jun 2021 10:13:43 +0800 Subject: [PATCH] =?UTF-8?q?3:=E6=97=A0=E9=87=8D=E5=A4=8D=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E7=9A=84=E6=9C=80=E9=95=BF=E5=AD=90=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...stSubstringWithoutRepeatingCharacters.java | 87 +++++++++++++++++++ ...gestSubstringWithoutRepeatingCharacters.md | 45 ++++++++++ 2 files changed, 132 insertions(+) create mode 100644 src/main/java/leetcode/editor/cn/LongestSubstringWithoutRepeatingCharacters.java create mode 100644 src/main/java/leetcode/editor/cn/LongestSubstringWithoutRepeatingCharacters.md 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
+
+ +

 

+ +

提示:

+ + +
Related Topics
  • 哈希表
  • 双指针
  • 字符串
  • Sliding Window
  • \n
  • 👍 5579
  • 👎 0
  • \ No newline at end of file