0
点赞
收藏
分享

微信扫一扫

无重复字符的最长子串 力扣第三题(java)

皮皮球场 2022-01-20 阅读 48
javaleetcode

java 无重复字符的最长子串 (力扣)


class Solution {
    public int lengthOfLongestSubstring(String s) {
        int length = s.length();  
        if(length<=1){   //处理输入字符 小于等于1  直接输出
            return length;
        }
        int maxLength = 1;
        int left = 0,right = 0;  //左右
        Map<Character,Integer> map = new HashMap<Character ,Integer>();
       while(right<length){  //最右不能超过字符长度
            char rightChar = s.charAt(right); //循环下 获取字符串右面的字符
            int rightCharIndex = map.getOrDefault(rightChar , -1); //当Map集合中有这个key时,就使用这个-1;
            left = Math.max(left , rightCharIndex + 1);
            maxLength = Math.max(maxLength,right-left +1);
            map.put(rightChar,right);
            right++;
       }
       return maxLength;
    }
}

实现:

public static void main(Stirng []args){
	Solution so =new Solution();
	so.lengthOfLongestSubstring("asdasdqqasdasdasd");
}

预期结果:3                                                 (asd)
将字符串分割成  单个字符来处理  右坐标向右移动   使用到HashMap
  判断是否已经存在右坐标相同的字符 找到相同的 然后左坐标等于右坐标 减少一些查询

图解

举报

相关推荐

0 条评论