最长特殊序列II
给定字符串列表,你需要从它们中找出最长的特殊序列。最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列)。
子序列可以通过删去字符串中的某些字符实现,但不能改变剩余字符的相对顺序。空序列为所有字符串的子序列,任何字符串为其自身的子序列。
输入将是一个字符串列表,输出是最长特殊序列的长度。如果最长特殊序列不存在,返回 -1 。
示例:
输入: "aba", "cdc", "eae"
输出: 3
提示:
- 所有给定的字符串长度不会超过 10 。
- 给定字符串列表的长度将在 [2, 50 ] 之间。
1 class Solution { 2 public int findLUSlength(String[] strs) { 3 int res=-1; 4 int n=strs.length; 5 int j=0; 6 for(int i=0;i<n;i++){ 7 for(j=0;j<n;j++){ 8 if(i==j) continue; 9 if(checkSubs(strs[i],strs[j])) break; 10 } 11 if(j==n) res=Math.max(res,(int)strs[i].length()); 12 } 13 return res; 14 } 15 16 boolean checkSubs(String subs,String str){ 17 int index=0; 18 for(int i=0;i<str.length();i++){ 19 if(str.charAt(i)==subs.charAt(index)) index++; 20 if(index==subs.length()) break; 21 } 22 return index==subs.length(); 23 } 24 }