• Lc3-无重复字符的最长子串


    import java.util.HashMap;
    import java.util.Map;
    
    /*
     * Given a string, find the length of the longest substring without repeating characters.
    
    Example 1:
    
    Input: "abcabcbb"
    Output: 3 
    Explanation: The answer is "abc", with the length of 3. 
    Example 2:
    
    Input: "bbbbb"
    Output: 1
    Explanation: The answer is "b", with the length of 1.
    Example 3:
    
    Input: "pwwkew"
    Output: 3
    Explanation: The answer is "wke", with the length of 3. 
                 Note that the answer must be a substring, "pwke" is a subsequence and not a substring.
     */
    public class Lc3 {
        // ·滑动窗口
        public static int lengthOfLongestSubstring(String s) {
    
            // key 值 - 当前值,value 值-当前的位置
            Map<Character, Integer> map = new HashMap<Character, Integer>();
            int ans = 0;
            char[] ch = s.toCharArray();
            for (int end = 0, start = 0; end < ch.length; end++) {
                // ·如果map包含当前值,更新其位置
                if (map.containsKey(ch[end])) {
                    start = Math.max(map.get(ch[end]), start);
                }
                // ·每次更新最大距离,当前位置减去上一次重复的位置,再往后加一位即是本次的最大距离
                ans = Math.max(ans, end - start + 1);
                map.put(ch[end], end + 1);
            }
    
            return ans;
        }
    
        public static void main(String[] args) {
            String s = "dvdf";
            System.out.println(lengthOfLongestSubstring(s));
        }
    }
  • 相关阅读:
    Laravel5.0学习--01 入门
    MySQL账户安全设置
    360路由器c301最新固件支持万能中继
    PsySH:PHP交互运行环境
    PHP-CS-Fixer:格式化你的PHP代码
    JVM 类加载机制详解
    Java虚拟机(JVM)概述
    聊一聊 Spring 中的线程安全性
    Java 里如何实现线程间通信
    Java 数据结构
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/12132424.html
Copyright © 2020-2023  润新知