class Solution {
public int findLUSlength(String[] strs) {
int n = strs.length;
int ans = -1;
outer:
for (int i = 0; i < n; i++) {
// 剪枝
if (strs[i].length() <= ans) {
continue;
}
// 判断 s[i] 是否为其他字符串的子序列
for (int j = 0; j < n; j++) {
if (i != j && isSubStr(strs[i], strs[j])) {
// 结束内层循环 继续执行 outer 标记的外层循环
continue outer;
}
}
// 不是任何一个字符串的子序列 说明找到一个特殊序列
ans = Math.max(ans, strs[i].length());
}
return ans;
}
// 判断 a 是否为 b 的子序列
boolean isSubStr(String a, String b) {
int i = 0, j = 0;
while (i < a.length() && j < b.length()) {
if (a.charAt(i) == b.charAt(j)) {
i++;
}
j++;
}
return i == a.length();
}
}
Java循环标签用法 - 力扣522. 最长特殊序列 II
最新推荐文章于 2024-07-12 18:02:43 发布