Leetcode学习(20)—— Longest Uncommon Subsequence I

来源:互联网 发布:唐皓强c语言 编辑:程序博客网 时间:2024/06/18 04:47

Given a group of two strings, you need to find the longest uncommon subsequence of this group of two strings. The longest uncommon subsequence is defined as the longest subsequence of one of these strings and this subsequence should not be any subsequence of the other strings.

A subsequence is a sequence that can be derived from one sequence by deleting some characters without changing the order of the remaining elements. Trivially, any string is a subsequence of itself and an empty string is a subsequence of any string.

The input will be two strings, and the output needs to be the length of the longest uncommon subsequence. If the longest uncommon subsequence doesn’t exist, return -1.


给定一组两个字符串,您需要找到这组两个字符串中最长的不常见的子序列。 最长的不寻常的子序列被定义为这些字符串之一的最长子序列,并且该子序列不应该是其他字符串的任何子序列。

子序列是可以通过删除一些字符而不改变剩余元素的顺序从一个序列导出的序列。 简而言之,任何字符串本身都是一个子序列,空字符串是任何字符串的子序列。

输入将是两个字符串,输出需要是最长的不常见子序列的长度。 如果最长不常见的子序列不存在,则返回-1。


Example 1:Input: "aba", "cdc"Output: 3Explanation: The longest uncommon subsequence is "aba" (or "cdc"), because "aba" is a subsequence of "aba", but not a subsequence of any other strings in the group of two strings. 

Note:

Both strings’ lengths will not exceed 100.
Only letters from a ~ z will appear in input strings.


class Solution(object):    def findLUSlength(self, a, b):        return -1 if a==b else max(len(a),len(b))

这里写图片描述


思路:

对于字符串A,B,当len(A)> len(B),A或B中最长的子序列为A,B的任何子序列都不能等于A.答案:len(A)。

当len(A)== len(B)时,B等于A的唯一子序列是B; 所以只要A!= B,答案依然是len(A)。

当A == B时,A的任何子序列都可以在B中找到,反之亦然,所以答案是-1。


另一种方法:
使用 亦或 处理

class Solution(object):    def findTheDifference(self, s, t):        return chr(reduce(operator.xor, map(ord, s + t)))

将 s 与 t 拼接,并将其中所有的 ascii 字符 转换成 对应的 十进制数字,
对这些数字进行 亦或 处理,将最后得到的 十进制数字 转换成 ascii 字符,此字符即为随机添加的那个字符。

0 0