首页 > 其他 > 详细

无重复字符的最长字串

时间:2020-07-30 21:00:35      阅读:77      评论:0      收藏:0      [点我收藏+]

技术分享图片

  • 使用HashMap,遍历字符串,将每个字符存入map中。
  • 定义变量left,每次遍历时,使用containsKey判断该字符是否已经存在,若存在令left=i,则当前不重复子串长度为i-left
  • 定义变量max来表示最长无重复子串,每次循环后,判断max本身与当前遍历的不重复子串i-left的大小,令max为最大值。
  • 循环结束后,max的值即为无重复字符的最长字串。
完整代码如下
  public class ReString {
      public static int lengthOfLongestSubstring(String s) {
          if (s.length()==0) {
              return 0;
          }
          HashMap<Character, Integer> map = new HashMap<Character, Integer>();
          int max = 0;
          int left = 0;
          for(int i = 0; i < s.length(); i ++){
              if(map.containsKey(s.charAt(i))){
                  left = map.get(s.charAt(i));
              }
              map.put(s.charAt(i),i);
              max = Math.max(max,i-left);
          }
          return max;

      }

      public static void main(String[] args) {
          int i = lengthOfLongestSubstring("abcabcbb");
          System.out.println(i);
      }
  }

输出结果为3,结果正确。

无重复字符的最长字串

原文:https://www.cnblogs.com/g9420/p/13405516.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!