题解 | #最长不含重复字符的子字符串#

最长不含重复字符的子字符串

http://www.nowcoder.com/practice/48d2ff79b8564c40a50fa79f9d5fa9c7

import java.util.*;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return int整型
     */
    public int lengthOfLongestSubstring (String s) {
        // write code here
        if(s.length() <= 1){return s.length();}
        int[] len = new int[s.length()];  //记录当前字符串长度
        HashMap<Character, Integer> map = new HashMap<Character, Integer>();  //记录字符和索引
        int maxlength = 1;  //字符串最大长度
        //边界条件
        len[0] = 1; 
        map.put(s.charAt(0),0);
        
        for(int i = 1; i < s.length(); i++){
            if(!map.containsKey(s.charAt(i))){
                len[i] = len[i - 1] + 1;
            }
            else {
                int theBeforeIndex = map.get(s.charAt(i));
                int tmpCount = i - theBeforeIndex;
                len[i] = Math.min(tmpCount, len[i - 1] + 1);
            }
            map.put(s.charAt(i), i);
            maxlength = Math.max(maxlength,len[i]);
        }
        
        return maxlength;
    }
}
全部评论

相关推荐

最近经历我的处女面,还是一家大厂,笑自己不自量力,面试官态度特好,问的问题也很专业。好多问题结结巴巴说不出来,还以为自己多厉害呢。跑过去耽误人家时间……😅简历上的写的最好还是实打实,不然一问三不知。
不要卷我了:我的第一次面大厂,前面聊的好好的,直到说让我写道sql,题很简单,但是我完全没准备光刷算法题了,group by后面多写了个字段,我说我写好了面试官笑了一下,后面说要去面下一个同学了
26届校招投递进展
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务