跳至主要內容

521. 最长特殊序列 Ⅰ


521. 最长特殊序列 Ⅰ

🟢   🔖  字符串  🔗 力扣open in new window LeetCodeopen in new window

题目

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 and b consist of lower-case English letters.

题目大意

给你两个字符串 ab,请返回 _这两个字符串中最长的特殊序列 _ 的长度。如果不存在,则返回 -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
  • ab 由小写英文字母组成

解题思路

解题思路

题目理解

最长特殊序列 是指在两个字符串中,不能作为另一个字符串子序列的独有最长子序列。

  • 如果 ab 相等:
    • 两个字符串彼此是完全相同的,无法找到独特的子序列,返回 -1
  • 如果 ab 不相等:
    • 较长的字符串不会是较短字符串的子序列(因为子序列需要完全包含所有字符),因此较长字符串本身就是最长特殊序列,返回其长度。

复杂度分析

  • 时间复杂度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+🟠🀄️open in new window 🔗open in new window