1. 程式人生 > 資訊 >小米訴爭“小米金服”商標被駁回

小米訴爭“小米金服”商標被駁回

請從字串中找出一個最長的不包含重複字元的子字串,計算該最長子字串的長度。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

class Solution {
    public int lengthOfLongestSubstring(String s) {
        if (s == null || s.length() == 0) {
            return 0;
        }
        Map<Character, Integer> cntMap = new HashMap<>();
        int ans = 0;
        int left = 0, right = 0;
        while (right < s.length()) {
            cntMap.put(s.charAt(right), cntMap.getOrDefault(s.charAt(right), 0) + 1);
            if (cntMap.get(s.charAt(right)) == 2) {
                while (cntMap.get(s.charAt(left)) != 2) {
                    cntMap.put(s.charAt(left), cntMap.get(s.charAt(left)) - 1);
                    left++;
                }
                cntMap.put(s.charAt(left), cntMap.get(s.charAt(left)) - 1);
                left++;
            }
            ans = Math.max(ans, right - left + 1);
            right++;
        }
        return ans;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            System.out.println(new Solution().lengthOfLongestSubstring(in.next()));
        }
    }
}
心之所向,素履以往 生如逆旅,一葦以航