手写算法:

  • 链接: https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

    1. var lengthOfLongestSubstring = function(s) {
    2. // 哈希集合,记录每个字符是否出现过
    3. const occ = new Set();
    4. const n = s.length;
    5. // 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
    6. let rk = -1, ans = 0;
    7. for (let i = 0; i < n; ++i) {
    8. if (i != 0) {
    9. // 左指针向右移动一格,移除一个字符
    10. occ.delete(s.charAt(i - 1));
    11. }
    12. while (rk + 1 < n && !occ.has(s.charAt(rk + 1))) {
    13. // 不断地移动右指针
    14. occ.add(s.charAt(rk + 1));
    15. ++rk;
    16. }
    17. // 第 i 到 rk 个字符是一个极长的无重复字符子串
    18. ans = Math.max(ans, rk - i + 1);
    19. }
    20. return ans;
    21. };

    手写题:

  • 手写vuex新版和老版