题目
给你两个字符串 a
和 b
,请返回 这两个字符串中 最长的特殊序列 的长度。如果不存在,则返回 -1
。
「最长特殊序列」 定义如下:该序列为 某字符串独有的最长子序列(即不能是其他字符串的子序列) 。
字符串 s
的子序列是在从 s
中删除任意数量的字符后可以获得的字符串。
- 例如,
"abc"
是"aebdc"
的子序列,因为删除"a***e***b***d\***c"
中斜体加粗的字符可以得到"abc"
。"aebdc"
的子序列还包括"aebdc"
、"aeb"
和""
(空字符串)。
示例1:
1 | 输入: a = "aba", b = "cdc" |
示例2:
1 | 输入:a = "aaa", b = "bbb" |
示例3:
1 | 输入:a = "aaa", b = "aaa" |
提示:
1 <= a.length, b.length <= 100
a
和b
由小写英文字母组成
解法
解法一:
如果两个字符串长度不相同,A字符串大于B字符串,则A字符串不能通过B字符串删除某些字符得到,那么最长特殊序列的长度就是A的长度。
如果两个字符串相等的话,分两种情况:
- 两个字符串相等,那么就没有最长特殊字符序列
- 两个字符串不相等,那么任意字符串的长度就是最长特殊字符序列
Java
1 | public int findLUSlength(String a, String b) { |