dw 做网站图片之间的链接,淄博网站排名外包,国内永久免费crm不实名认证,上海企业网站备案LeetCode-day15-522. 最长特殊序列 II 题目描述示例示例1#xff1a;示例2#xff1a; 思路代码 题目描述
给定字符串列表 strs #xff0c;返回其中 最长的特殊序列 的长度。如果最长特殊序列不存在#xff0c;返回 -1 。
特殊序列 定义如下#xff1a;该序列为某字符串… LeetCode-day15-522. 最长特殊序列 II 题目描述示例示例1示例2 思路代码 题目描述
给定字符串列表 strs 返回其中 最长的特殊序列 的长度。如果最长特殊序列不存在返回 -1 。
特殊序列 定义如下该序列为某字符串 独有的子序列即不能是其他字符串的子序列。
s 的 子序列可以通过删去字符串 s 中的某些字符实现。
例如“abc” 是 “aebdc” 的子序列因为您可以删除aebdc中的加粗字符来得到 “abc” 。“aebdc的子序列还包括aebdc”、 “aeb” 和 “” (空字符串)。
示例
示例1 输入: strs [“aba”,“cdc”,“eae”] 输出: 3 示例2 输入: strs [“aaa”,“aaa”,“aa”] 输出: -1 思路
枚举判断子序列
把 strs 按照长度从大到小排序。一旦枚举到符合要求的字符串就立刻返回其长度。如果没有符合要求的字符串返回 −1。
代码中next:的作用是在找到非公共子序列时跳出内层循环。类似goto;
代码 public static int findLUSlength(String[] strs) {Arrays.sort(strs,(a,b) - b.length()-a.length());next:for (int i 0; i strs.length; i) {for (int j 0; j strs.length; j) {if (j ! i isSubseq(strs[i],strs[j])){continue next;}}return strs[i].length();}return -1;}private static boolean isSubseq(String s, String t) {int i 0;for (char c : t.toCharArray()) {if (s.charAt(i) c i s.length()){return true;}}return false;}
}