java中求一个字符创的最大不重复长度

来源:互联网 发布:smart电子白板软件 编辑:程序博客网 时间:2024/06/05 04:28

求一个字符串最长的不重读长度,可以看看代码:

package excise;import  java.util.Arrays;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Test{  public static void longestNodupSubstring(String string) {int len = string.length();if(len > 0){Map<Character,Integer> cursor = new HashMap<Character,Integer>();cursor.put(string.charAt(0),0);int[] lengthAt = new int[string.length()];lengthAt[0]=1;int max = 0 ;for(int i = 1 ; i < len;i++){char c =string.charAt(i);if(cursor.containsKey(c)){lengthAt[i] = Math.min(lengthAt[i-1]+1, i-cursor.get(c));                }else {                      lengthAt[i] = lengthAt[i-1]+1;                  }                  max = Math.max(max, lengthAt[i]);                  cursor.put(c, i);              }              for(int i=0;i<len;i++){                  if(max == lengthAt[i]){                      System.out.println(string.substring(i-max+1, i+1));                  }              }          }      }  public static void main(String args[]){String test="abcdea";longestNodupSubstring(test);}  }  


0 0
原创粉丝点击