

每次找最大的,删除其子串,依次执行.
主要是子串判断.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
class Solution { public int findLUSlength(String[] strs) { List<String> strList = new LinkedList<String>(); for(String str:strs){ strList.add(str); } while(strList.size()>0){ int max = -1; String r = null; for(String s:strList){ if (s.length()>max){ max = s.length(); r = s; } } boolean ok = true; char[] rs = r.toCharArray(); strList.remove(r); List<String> subStringList = new ArrayList<String>(); for(String s:strList){ if (s.equals(r)){ ok = false; } char[] cs = s.toCharArray(); int clen = s.length(); int i=0; int j =0; while(j<clen && i<max){ while(i<max && rs[i]!=cs[j]){ i++; } if (i<max && rs[i]==cs[j]){ j++; }else{ break; } i++; } if (j==clen){ subStringList.add(s); } } for(String s:subStringList){ strList.remove(s); } if (ok){ return max; }
} return -1; } }
|
近期评论