找给定字符串中最大的不同字符的子串
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 1.
Given "pwwkew"
, the answer is "wke"
, with the length of 3. Note that the answer must be asubstring, "pwke"
is a subsequence and not a substring.
/*time:2016-7-28 15:50:05
* location:home
* */
import java.util.HashMap;
public class Solution3 {
public static int lengthOfLongestSubstring(String s){
if(s.length() == 0){
return 0;
}
int max = 0;
HashMap<Character, Integer> map = new HashMap<Character,Integer>();
for(int i=0,j=0; i<s.length();i++){
if(map.containsKey(s.charAt(i))){
j = Math.max(j, map.get(s.charAt(i))+1);
}
map.put(s.charAt(i), i);
max = Math.max(max, i+1-j);
}
return max;
}
//test
public static void main(String[] args){
String s = "heelldf";
//System.out.print(s);
int max = lengthOfLongestSubstring(s);
System.out.println(max);
}
}