最长特殊序列 Ⅰ

作者: _阿南_ | 来源:发表于2020-03-19 16:54 被阅读0次

题目:

给定两个字符串,你需要从这两个字符串中找出最长的特殊序列。最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列)。

子序列可以通过删去字符串中的某些字符实现,但不能改变剩余字符的相对顺序。空序列为所有字符串的子序列,任何字符串为其自身的子序列。

输入为两个字符串,输出最长特殊序列的长度。如果不存在,则返回 -1。

示例 :

输入: "aba", "cdc"
输出: 3
解析: 最长特殊序列可为 "aba" (或 "cdc")
说明:

两个字符串长度均小于100。
字符串中的字符仅含有 'a'~'z'。

题目的理解:

子序列可以通过删去字符串中的某些字符实现误导了一次,这个描述多此一举,导致我以为字符串从中间删除一个字符也是可以的,其实并不是。子序列就是理解的一个字符串的子字符串的概念。
如果两个字符串长度不一样,那么长的字符串就是最优解。
如果两个字符串长度一样,则进行左边或右边逐渐减字符串,来判断是否是另一个字符串的子字符串。

python实现

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

        length = len(a)
        for minus in range(length):
            a_temp = a[minus::]
            if b.count(a_temp) <= 0:
                return len(a_temp)
            a_temp = a[0:(length - minus)]
            if b.count(a_temp) <= 0:
                return len(a_temp)

        return -1

提交

ok

对题目的理解到位,还是很重要的。做题前,一定要熟读题目3遍。

// END 人的差别不大,主要是在精神上

相关文章

  • 522. 最长特殊序列 II

    给定字符串列表 strs ,返回其中 最长的特殊序列 。如果最长特殊序列不存在,返回 -1 。 特殊序列 定义如下...

  • 最长特殊序列 Ⅰ

    题目: 题目的理解: 被子序列可以通过删去字符串中的某些字符实现误导了一次,这个描述多此一举,导致我以为字符串从中...

  • 2018-07-15

    521.最长特殊序列 题目描述 给定两个字符串,你需要从这两个字符串中找出最长的特殊序列。最长特殊序列定义如下:该...

  • 【LeetCode】521. 最长特殊序列 Ⅰ(Longest

    题目如下: 给定两个字符串,你需要从这两个字符串中找出最长的特殊序列。最长特殊序列定义如下:该序列为某字符串独有的...

  • 522. 最长特殊序列 II

    522. 最长特殊序列 II[https://leetcode-cn.com/problems/longest-u...

  • 公共子序列问题

    最长公共子序列 最长上升子序列 最长公共上升子序列

  • LeetCode521.最长特殊序列 Ⅰ

    更多LeetCode题目解法传送门

  • 字符串的几个问题

    1.最长公共子序列2.最长公共子串3.最长回文串4.最长回文序列5.最长递增序列6.最长先增后减序列7.(最短)编...

  • 子序列问题

    最长公共子序列 最长上升/下降/不升/不降子序列

  • LintCode 最长上升子序列

    给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明 最长上升子序列的定义: 最长上升子序列问...

网友评论

    本文标题:最长特殊序列 Ⅰ

    本文链接:https://www.haomeiwen.com/subject/dnmlyhtx.html