题目
最长无重复字符的子串给定一个字符串,请找出其中无重复字符的最长子字符串。
例如,在"abcabcbb"
中,其无重复字符的最长子字符串是"abc"
,其长度为 3
。
对于,"bbbbb"
,其无重复字符的最长子字符串为"b"
,长度为1
。
解题
利用HashMap,map中不存在就一直加入,存在的时候,找到相同字符的位置,情况map,更改下标
public class Solution { /** * @param s: a string * @return: an integer */ public int lengthOfLongestSubstring(String s) { // write your code here HashMap<Character,Integer> map = new HashMap<Character,Integer>(); if(s == null) return 0; if(s.length() <=1) return s.length(); int longest = -1; for(int i = 0;i<s.length();i++){ char ch = s.charAt(i); if(map.containsKey(ch)){ longest = Math.max(map.size(),longest); i = map.get(ch); map.clear(); }else{ map.put(ch,i); } } longest = Math.max(map.size(),longest); map.clear(); return longest; } }
时间: 2024-10-20 16:08:16