得到一个字符串最大无重复子串长度

来源:互联网 发布:淘宝村级服务站申请 编辑:程序博客网 时间:2024/04/30 13:21

以下是我自己见解,写的不好多多包涵

如“abcdb”,两个变量,一个保存目前所遍历字符的下标位置(pre),一个保存当前这个字符最大的无重复长度(cur),而length则取(length,cur)最大长度


import java.util.*;public class DistinctSubstring {    public int longestSubstring(String A, int n) {        // write code here        char[] ch=A.toCharArray();//将字符A转为字符串数组        //字符的ascii码在0-256内        int[] m=new int[256];        for(int i=0;i<256;i++){            m[i]=-1;        }        int pre=-1;//记录此字符的下标        int cur=0;//记录当前这个字符的最大无重复长度        int len=0;//记录最后的长度        for(int i=0;i<n;i++){            pre=Math.max(pre,m[ch[i]]);//若有重复字符,记录下标            cur=i-pre;//若pre为-1,代表没有重复字符,长度加1,若有,则减去,得到目前最大长度            len=Math.max(cur,len);            m[ch[i]]=i;        }    return len;    }}
0 0