zoukankan      html  css  js  c++  java
  • 03.Longest Substring Without Repeating Characters

    Longest Substring Without Repeating Characters(最长的子串不重复字符)

    题目要求:给定一个字符串,找到最长的子字符串的长度,要求不重复字符。

    例如:

      给定一个字符串“abcabcbb”,答案是“abc”,长度是3。

      给定一个字符串“bbbbb”,答案是“b”,长度是1。

      给定一个字符串“pwwkew”,答案是“wke”,长度是3。

      注意:答案必须是一个子字符串,“pwke”是一个子序列,而不是一个子字符串。

    解法一:

      思路:基本思想为建立一个散列表来存储字符串中的字符。以字符为键,字符所处位置为值。设置两个值start,end来扫描字符串,同时更新散列表。如果该字符已经存在于散列表中,则更新start值,将start值赋值为最后找到的同一个字符的右侧。

     1 public class LongestSubstringWithoutRepeatingCharacters {
     2     
     3     public static void main(String[] args) {
     4         Scanner scanner = new Scanner(System.in);
     5         String string = scanner.nextLine();
     6         System.out.println("最长不重复子串的长度为:" + lengthOfLogestSubstring(string));
     7     }
     8 
     9     
    10     public static int lengthOfLogestSubstring(String s) {
    11         int max = 0;
    12         Map<Character, Integer> map = new HashMap<>();
    13         for (int start = 0,end = 0; end < s.length(); end++) {
    14             if (map.containsKey(s.charAt(end))) {
    15                 start = Math.max(start, map.get(s.charAt(end))+1);
    16             }
    17             map.put(s.charAt(end), end);
    18             max = Math.max(max, end-start+1);
    19         }
    20         return max;
    21     }
    22 }

     

  • 相关阅读:
    linux服务 ssh
    详细教你两台电脑之间传文件
    openstack之keystone
    Token
    mybatis返回刚刚插入数据的自增长的id值
    事务配置在applicationContext.xml文件中不起作用,控制不了异常回滚
    SSM框架整合
    ssm框架的小总结
    spring_mvc入门项目的小总结
    tcp和udp的网络编程(发送消息及回复)
  • 原文地址:https://www.cnblogs.com/mrjoker-lzh/p/9768584.html
Copyright © 2011-2022 走看看