可以通过比较两个字符串的长度来解决这个问题:
- 如果
a == b
,则它们没有独特的子序列,返回-1
。 - 否则,最长特殊序列就是两个字符串中较长的那个,返回
max(len(a), len(b))
。
代码实现(Python):
def findLUSlength(a: str, b: str) -> int:
if a == b:
return -1
return max(len(a), len(b))
# 示例测试
print(findLUSlength("aba", "cdc")) # 3
print(findLUSlength("aaa", "aaa")) # -1
print(findLUSlength("abc", "abcd")) # 4
解释:
- 当
a
和b
不同时,较长的字符串本身就是最长特殊序列(因为它不会是另一个字符串的子序列)。 - 当
a == b
时,没有独特的子序列,返回-1
。
这个算法的时间复杂度是 O(1),因为它只涉及字符串长度的比较。