其他分享
首页 > 其他分享> > Leecode03——最长字符串

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