Redian新闻
>
LeetCode 力扣官方题解 | 521. 最长特殊序列 Ⅰ

LeetCode 力扣官方题解 | 521. 最长特殊序列 Ⅰ

公众号新闻

521. 最长特殊序列 I(点击文末阅读原文查看题目)

题目描述

难易度:简单

给你两个字符串 a 和 b,请返回 这两个字符串中 最长的特殊序列  的长度。如果不存在,则返回 -1。

「最长特殊序列」 定义如下:该序列为 某字符串独有的最长子序列(即不能是其他字符串的子序列)。

字符串 s 的子序列是在从 s 中删除任意数量的字符后可以获得的字符串。

  • 例如,"abc" 是 "aebdc" 的子序列,因为删除 "aebdc" 中斜体加粗的字符可以得到 "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 由小写英文字母组成


解决方案


方法一:脑筋急转弯


思路

字符串的子序列的长度不会超过该字符串的长度。若子序列的长度等于字符串的长度,那么子序列就是该字符串。


若两字符串不相同,那么我们可以选择较长的字符串作为最长特殊序列,显然它不会是较短的字符串的子序列。特别地,当两字符串长度相同时(但不是同一字符串),我们仍然可以选择其中的一个字符串作为最长特殊序列,它不会是另一个字符串的子序列。

若两字符串相同,那么任一字符串的子序列均会出现在两个字符串中,此时应返回 -1。



代码


Python3

class Solution:    def findLUSlength(self, a: str, b: str) -> int:        return max(len(a), len(b)) if a != b else -1


C++

class Solution {public:    int findLUSlength(string a, string b) {        return a != b ? max(a.length(), b.length()) : -1;    }};


Java

class Solution {    public int findLUSlength(String a, String b) {        return !a.equals(b) ? Math.max(a.length(), b.length()) : -1;    }}


C#

public class Solution {    public int FindLUSlength(string a, string b) {        return !a.Equals(b) ? Math.Max(a.Length, b.Length) : -1;    }}

Golang 

func findLUSlength(a, b string) int {    if a != b {        return max(len(a), len(b))    }    return -1}
func max(a, b int) int { if b > a { return b } return a}


C

#define MAX(a, b) ((a) > (b) ? (a) : (b))
int findLUSlength(char * a, char * b) { int lena = strlen(a); int lenb = strlen(b); return strcmp(a, b) != 0 ? MAX(lena, lenb) : -1; }


JavaScript

var findLUSlength = function(a, b) {    return a !== b ? Math.max(a.length, b.length) : -1;};


复杂度分析

  • 时间复杂度:O(n),其中 n 是字符串 a 的长度。当两字符串长度不同时,时间复杂度为 O(1);当字符串长度相同时,时间复杂度为 O(n)。因此时间复杂度为 O(n)。

  • 空间复杂度:O(1)。



BY / 

本文作者:力扣

编辑&版式:Janson

声明:本文归“力扣”版权所有,如需转载请联系。


点个在看,少个 bug

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
LeetCode 力扣官方题解 | 2049. 统计最高分的节点数目美国自驾游——乔治亚州亚特兰大市 Atlanta Georgia大降级时代:前年投消费,去年投芯片,今年投简历!刘震云:世界上不缺文学的垃圾LeetCode 力扣官方题解 | 2104. 子数组范围和LeetCode 力扣官方题解 | 2055. 蜡烛之间的盘子LeetCode 力扣官方题解 | 258. 各位相加老鸟也难逃一劫,Leetcode刷题家今年是真的惨!最后的菜地收获Leetcode出题人,揭秘打工体验!AAAI 2023 | 均匀序列更好:时间间隔感知的序列推荐数据增强方法气候变化 | IEEE 2023主席Saifur Rahman和IEEE代表团出席COP27刷完 LeetCode 是什么水平?能拿到什么等级的Offer?LeetCode 力扣官方题解 | 2016. 增量元素之间的最大差值拿下6家offer经验分享:刷LeetCode这件事,其实不靠努力!首次免费送!Leetcode刷题速通指南,转码留学生请低调使用!2022傅雷翻译出版奖获奖者揭晓 Le palmarès du Prix Fu Lei 2022 dévoiléXcode弃用Bitcode,导致应用体积大幅增加背完LeetCode刷题模板,真的不一样!(已拿字节offer)LeetCode 力扣官方题解 | 6. Z 字形变换发现了《Leetcode刷题指南》,我半年成功转码上岸靠LeetCode刷题模板,学妹“开奖”字节offer!注意!眼下比刷LeetCode更重要的事打卡LeetCode的第100天,我才发现......Layoff潮,对传统刷LeetCode发起新挑战!深度好文|打卡LeetCode的第100天,我才发现......注意!眼下比有刷LeetCode更重要的事…布达佩斯—温泉下棋留学圈疯传!商科生转码《Leetcode刷题指南》,信息量太大LeetCode 力扣官方题解 | 590. N 叉树的后序遍历2023开年16天上岸谷歌,Leetcode刷题小抄背完,面试真的不一样…LeetCode 力扣官方题解 | 537. 复数乘法LeetCode 力扣官方题解 | 953. 验证外星语词典反转了!上千人请愿,移民副部长特批!勤奋的移民一家获得永居权!谷歌亚麻,越来越嫌弃Leetcode刷题家…
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。