面试:哈希:最长不同字符子串

来源:互联网 发布:哪些属于淘宝禁售商品 编辑:程序博客网 时间:2024/06/06 14:44

题目

输入一个字符串,求不含有重复字母的最长子串的长度
“aaaa” a 长度1


算法

  1. hash记录字母和该字母出现的次数
  2. 记录字母出现的位置

import java.util.*;class Solution{    public int lengthOfLongestSubstring(String s){        int n=s.length(), start=0, maxlen=0;        //hash记录字符最新出现的位置        HashMap<Character,Integer> hm=new HashMap<Character,Integer>();        for(int i=0;i<n;i++){            char c=s.charAt(i);            if(hm.containsKey(c) && hm.get(c) >=start){                //更新出现的位置                start=hm.get(c)+1;            }            hm.put(c, i);            maxlen=Math.max(maxlen, i-start+1);        }        return maxlen;    }}
0 0
原创粉丝点击