zoukankan      html  css  js  c++  java
  • LeetCode#3-找无重复的最长子串

    import java.util.HashMap;
    
    /*
    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
    
    示例 1:
    
    输入: "abcabcbb"
    输出: 3
    解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
    示例 2:
    
    输入: "bbbbb"
    输出: 1
    解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
    示例 3:
    
    输入: "pwwkew"
    输出: 3
    解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
         请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
    
    
          解题思路:
              维护一个hashmap<char,index>
    
     */
    public class p3 {
        public static int lengthOfLongestSubstring(String s) {
            int maxLen=0,tmplen=0,left=0;
            int len=s.length();
            if(len==0)return 0;
            if(len==1)return 1;
            HashMap<Character,Integer> map=new HashMap<>();
            char arr[]=s.toCharArray();
            for(int i=0;i<arr.length;i++){
                if(!map.containsKey(arr[i])){//若不存在该键值
                    map.put(arr[i],i);
                    tmplen++;
                    maxLen=Math.max(tmplen,maxLen);
    
                }
                else{//遍历到已经有了
                    int index=map.get(arr[i]);
                    left=Math.max(left,index+1);
                    tmplen=i-left+1;
                    maxLen=Math.max(tmplen,maxLen);
                    map.put(arr[i],i);
                }
            }
            return  maxLen;
    
        }
    
        public static void main(String[] args) {
            System.out.println(lengthOfLongestSubstring("pwwkew"));
        }
    
    }

    运行结果:

  • 相关阅读:
    sql统计
    如何让文本框内的提示信息在激活文本框时清空
    Button onclick事件
    CustomValidator 的应用
    DjangoORM数据库创建
    HDU3685 几何+重心+凸包+判定锐角三角形
    CF181c
    POJ2187 旋转卡壳+凸包
    HDU2907凸包+凹面
    HDU2108+几何+判断凸多边形
  • 原文地址:https://www.cnblogs.com/jifeng0902/p/13227747.html
Copyright © 2011-2022 走看看