开发者

LeetCode程序员面试题之无重复字符的最长子串

目录
  • 1.简述:
    • 示例 1:
    • 示例 2:
    • 示例 3:
  • 2.代码实现:

    1.简述:

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

    示例 1:

    输入: s = "abcabcbb"

    输出: 3

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

    示例 2:

    输入: s = "bbbbb"

    输出: 1

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

    示例 3:

    输入: s = "pwwkew"

    输出:编程 3

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

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

    2.代码实现:

    class Solution {
    public int lengthOfLongestSubstrijavascriptng(String s) {
    // 哈希集合,记录每个字符是否出现过
    Set<Character> occ = new HashSet<Character>();
    int n = s.length();
    // 右指针,初始值为 -1,相php当于我们在字符串的左边界的左侧,还没有开始移动
    int rk = -1, ans = 0;
    for (int i = 0; i < n; ++i) {
    if (i != 0) {
    // 左指针向右移动一格,移除一个字符
    occ.remove(s.charAt(i - 1));
    }
    while (rk + 1 < n && !occ.contains(s.charAt(rk + 1))) {
    // 不断地移动右指针
    occ.add(s.charAt(rk + 1));
    ++开发者_C开发rk;
    }
    // 第 i 到 rk 个字符是一个极长的无重复字符子串
    ans = Math.max(ans, rk - i + 1);
    }
    return ans;
    }
    }

    到此这篇关于LeetCode程序员面试题之无重复字符的最长子串的文章就介绍到这了,更编程客栈多相关Java计算无重复字符的最长子串内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜