leetcode522


每次找最大的,删除其子串,依次执行.
主要是子串判断.

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;
}
}