华为面试手撕真题【最长不重复子串】

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

一道leetcode原题:力扣

虽然是一个原题,但是面试官可能会出一个不同的变种,就是不输出最长的长度,而是输出最长子串的字符串,要注意听明白面试官的要求。

这里给出一个java版本的代码

import java.util.Scanner;
import java.util.*;
import java.util.stream.Collectors;
import java.math.BigInteger;
import java.util.stream.Stream;
 
class Main {

	public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        String input_str = in.nextLine();

        
        System.out.println(lengthOfLongestSubstring(input_str));
        
    }

    //注意看要求是返回最大长度还是最长子串本身
    public static int lengthOfLongestSubstring(String s) {
        if (s == null || s.length() < 1) {
            return 0;
        }
        Set<Character> set = new HashSet<>();
        // 无重复子串的右侧下标
        int right = 0;
        // 最长的长度
        int ans = 0;
        int n = s.length();
        for (int i = 0; i < n; i ++) {
            // i 就是左侧下标
            if (i != 0) {
                // 当不是第一个元素时,要把之前的元素删除掉 
                set.remove(s.charAt(i - 1));
            }
            while (right < n && !set.contains(s.charAt(right))) {
                // 当不存在重复字符时加入集合中
                set.add(s.charAt(right));
                // 右侧下标前进
                right ++;
            }
            // 遇见重复字符了,比较得到最长的子串长度
            ans = Math.max(ans, right - i);
        }
        return ans;
    }
 
}

 华为OD 2023/2022 最新机试题及讲解,100%通过率。

Java: https://renjie.blog.csdn.net/article/details/127947829

Python: https://renjie.blog.csdn.net/article/details/127946125

C++: https://renjie.blog.csdn.net/article/details/126965954

Js: https://renjie.blog.csdn.net/article/details/128974467

C: https://renjie.blog.csdn.net/article/details/129190260

  华为OD 2023/2022 最新机试题及讲解,100%通过率。

Java: https://renjie.blog.csdn.net/article/details/127947829

Python: https://renjie.blog.csdn.net/article/details/127946125

C++: https://renjie.blog.csdn.net/article/details/126965954

Js: https://renjie.blog.csdn.net/article/details/128974467

C: https://renjie.blog.csdn.net/article/details/129190260

  华为OD 2023/2022 最新机试题及讲解,100%通过率。

Java: https://renjie.blog.csdn.net/article/details/127947829

Python: https://renjie.blog.csdn.net/article/details/127946125

C++: https://renjie.blog.csdn.net/article/details/126965954

Js: https://renjie.blog.csdn.net/article/details/128974467

C: https://renjie.blog.csdn.net/article/details/129190260

猜你喜欢

转载自blog.csdn.net/misayaaaaa/article/details/130426636
今日推荐