輸入字串,輸出不重複的子串的長度,例如abcabcd,最長子串是abcd輸出4
阿新 • • 發佈:2018-12-21
import java.util.LinkedList; import java.util.Scanner; public class LengSubString { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String str=sc.nextLine(); System.out.println(subString(str)); } public static int subString(String s){ if(s==null||s.length()==0) return -1; int len=0;//記錄最長子串長度 int cur=0;//當前子串長度 char[] chs=s.toCharArray();//字串轉換為陣列 LinkedList<Character> list = new LinkedList<Character>();//便於增加和刪除元素 for(int i=0;i<chs.length;i++){ if(!list.contains(chs[i])){ list.add(chs[i]); cur=list.size(); if(cur>len) len=cur; }else{ list.add(chs[i]); int first=list.indexOf(chs[i]);//第一次出現的位置 for(int j=0;j<first;j++){ list.remove(); } list.remove(); } } return len; } }