• 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 }

     

  • 相关阅读:
    js获取url传递参数
    C#:String.Format数字格式化输出
    mathjs,math.js解决js运算精度问题
    js获取文件后缀
    vue生成二维码插件qrcodejs2
    多行文本超出后隐藏,超出3行隐藏
    vue点击按钮给商品按照价格进行倒叙
    vue关闭代码检查eslint
    vue + elementUi + upLoadIamge组件 上传文件到阿里云oss
    nodejs+expressjs+ws实现了websocket即时通讯,服务器和客户端互相通信
  • 原文地址:https://www.cnblogs.com/mrjoker-lzh/p/9768584.html
Copyright © 2020-2023  润新知