521. 最长特殊序列 Ⅰ
521. 最长特殊序列 Ⅰ
题目
Given two strings a
and b
, return the length of thelongest uncommon subsequence between a
and b
. If no such uncommon subsequence exists, return -1
.
An uncommon subsequence between two strings is a string that is a subsequence of exactly one of them.
Example 1:
Input: a = "aba", b = "cdc"
Output: 3
Explanation: One longest uncommon subsequence is "aba" because "aba" is a subsequence of "aba" but not "cdc".
Note that "cdc" is also a longest uncommon subsequence.
Example 2:
Input: a = "aaa", b = "bbb"
Output: 3
Explanation: The longest uncommon subsequences are "aaa" and "bbb".
Example 3:
Input: a = "aaa", b = "aaa"
Output: -1
Explanation: Every subsequence of string a is also a subsequence of string b. Similarly, every subsequence of string b is also a subsequence of string a. So the answer would be -1.
Constraints:
1 <= a.length, b.length <= 100
a
andb
consist of lower-case English letters.
题目大意
给你两个字符串 a
和 b
,请返回 _这两个字符串中最长的特殊序列 _ 的长度。如果不存在,则返回 -1
。
「最长特殊序列」 定义如下:该序列为 某字符串独有的最长 子序列(即不能是其他字符串的子序列) 。
字符串 s
的子序列是在从 s
中删除任意数量的字符后可以获得的字符串。
- 例如,
"abc"
是"aebdc"
的子序列,因为删除"aebdc"
中的'e'
'd'
字符可以得到"abc"
。"aebdc"
的子序列还包括"aebdc"
、"aeb"
和""
(空字符串)。
示例 1:
输入: a = "aba", b = "cdc"
输出: 3
解释: 最长特殊序列可为 "aba" (或 "cdc"),两者均为自身的子序列且不是对方的子序列。
示例 2:
输入: a = "aaa", b = "bbb"
输出: 3
解释: 最长特殊序列是 "aaa" 和 "bbb" 。
示例 3:
输入: a = "aaa", b = "aaa"
输出: -1
解释: 字符串 a 的每个子序列也是字符串 b 的每个子序列。同样,字符串 b 的每个子序列也是字符串 a 的子序列。
提示:
1 <= a.length, b.length <= 100
a
和b
由小写英文字母组成
解题思路
解题思路
题目理解
最长特殊序列 是指在两个字符串中,不能作为另一个字符串子序列的独有最长子序列。
- 如果
a
和b
相等:- 两个字符串彼此是完全相同的,无法找到独特的子序列,返回
-1
。
- 两个字符串彼此是完全相同的,无法找到独特的子序列,返回
- 如果
a
和b
不相等:- 较长的字符串不会是较短字符串的子序列(因为子序列需要完全包含所有字符),因此较长字符串本身就是最长特殊序列,返回其长度。
复杂度分析
- 时间复杂度:
O(min(a.length, b.length))
,比较字符串是否相等需要O(min(a.length, b.length))
的时间。 - 空间复杂度:
O(1)
,只使用了常量空间存储辅助变量
代码
/**
* @param {string} a
* @param {string} b
* @return {number}
*/
var findLUSlength = function (a, b) {
// 如果两个字符串相等,返回 -1
if (a === b) return -1;
// 如果不相等,返回较长字符串的长度
return Math.max(a.length, b.length);
};
相关题目
题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
---|---|---|---|---|---|
522 | 最长特殊序列 II | 数组 哈希表 双指针 2+ | 🟠 | 🀄️ 🔗 |