• LeetCode: Longest Substring Without Repeating Characters


     1 /**
     2  * 
     3  */
     4 package solution;
     5 
     6 import java.util.HashMap;
     7 
     8 /**
     9  * @author whh
    10  * 
    11  *         Given a string, find the length of the longest substring without
    12  *         repeating characters. For example, the longest substring without
    13  *         repeating letters for "abcabcbb" is "abc", which the length is 3. For
    14  *         "bbbbb" the longest substring is "b", with the length of 1.
    15  */
    16 public class LongestSubstringWithoutRepeatingCharacters {
    17 
    18     /**
    19      * @param args
    20      */
    21     public static void main(String[] args) {
    22         String s1 = "abcabcbb", s2 = "aaa", s3 = "abcdefghijklmnopqrstuvwxyz";
    23         String s4 = "wlrbbmqbhcdarzowkk";
    24         String s5 = "qopubjguxhxdipfzwswybgfylqvjzhar";
    25         System.out.println(lengthOfLongestSubstring(s1));
    26         System.out.println(lengthOfLongestSubstring(s2));
    27         System.out.println(lengthOfLongestSubstring(s3));
    28         System.out.println(lengthOfLongestSubstring(s4));
    29         System.out.println(lengthOfLongestSubstring(s5));
    30 
    31     }
    32 
    33     /**
    34      * @param s
    35      * @return
    36      */
    37     public static int lengthOfLongestSubstring(String s) {
    38 
    39         HashMap<Character, Integer> map = new HashMap<Character, Integer>();
    40 
    41         int begin = 0, maxLength = 0;
    42         for (int end = 0; end < s.length(); end++) {
    43             Character character = s.charAt(end);
    44             if (!map.containsKey(character)) {
    45                 map.put(character, 1);
    46             } else {
    47                 map.put(character, map.get(character) + 1);
    48             }
    49 
    50             if (map.get(character) == 2) {
    51                 while (map.get(s.charAt(begin)) <= 1) {
    52                     map.put(s.charAt(begin), map.get(s.charAt(begin)) - 1);
    53                     begin++;
    54                 }
    55                 map.put(s.charAt(begin), map.get(s.charAt(begin)) - 1);
    56                 begin++;
    57             }
    58             if ((end - begin + 1) >= maxLength) {
    59                 maxLength = end - begin + 1;
    60             }
    61         }
    62 
    63         return maxLength;
    64     }
    65 }
  • 相关阅读:
    基于jquery和bootstrap的下拉框左右选择功能
    移动端监听输入手机号以及判断手机号有效
    Latex中文识别texlive中文
    C++、堆栈
    项目大作业图书管理系统
    DIV页面分部
    Eclipse建立Java Web项目
    Java Web开发时JSP乱码问题
    python sdnu校园网模拟登陆
    pip 安装命令
  • 原文地址:https://www.cnblogs.com/Jellylovecode/p/Longest-Substring-Without-Repeating-Characters.html
Copyright © 2020-2023  润新知