LC每日一题|20240617 - 522. 最长特殊序列 II
给定字符串列表
strs,返回其中 最长的特殊序列 的长度。如果最长特殊序列不存在,返回-1。特殊序列 定义如下:该序列为某字符串 独有的子序列(即不能是其他字符串的子序列) 。
s的 子序列可以通过删去字符串s中的某些字符实现。
- 例如,
"abc"是"aebdc"的子序列,因为您可以删除"aebdc"中的下划线字符来得到"abc"。"aebdc"的子序列还包括"aebdc"、"aeb"和 "" (空字符串)。
提示:
2 <= strs.length <= 501 <= strs[i].length <= 10strs[i]只包含小写英文字母
题目等级:Medium
解题思路
暴力判断每个str是否是其他任何一次str的子序列,返回满足该条件的最长子串长度即可。
AC代码
class Solution {
fun findLUSlength(strs: Array<String>): Int {
var res = -1
for (i in strs.indices) {
var c = true
for (j in strs.indices) {
if (i == j) continue
var s = 0
var t = 0
while (s < strs[i].length && t < strs[j].length) {
if (strs[i][s] == strs[j][t]) s++
t++
}
c = s != strs[i].length
if (!c) break
}
if (c) res = Math.max(res, strs[i].length)
}
return res
}
}