Leecode03——最长字符串
作者:互联网
难度:挺难的,做了很多次才做出来
个人不足:一开始没有考虑到遇到重复字符X之后,开始计算距离位置要 从X之后一个开始
当然 所用 方法是HashMap,是一条可行之路
代码:
class Solution {
public int lengthOfLongestSubstring(String s) {
Map<Character,Integer>map = new HashMap();
HashMap<Character,Integer> hash=new HashMap<>();
//String s="pwwkew";//abba
char[] strToChar=s.toCharArray();
int res=0;
int start=0;
for (int i = 0; i <strToChar.length ; i++) {
if(hash.containsKey(strToChar[i])){
//如果哈希表存在某元素x
/*res=Math.max(res,i-start);*///求开始计算位置 与 i的距离
//start=hash.get(strToChar[i])+1;//既然到这一步 说明有重复,所以start会变化
start=Math.max(start,hash.get(strToChar[i])+1);
}
hash.put(strToChar[i],i);//后续一直加 则需要不断加1
res=Math.max(res,i-start+1);
}
return res;
}
}
标签:String,int,char,挺难,Leecode03,字符串,new,最长,HashMap 来源: https://blog.csdn.net/wish9968/article/details/120651557