Friday, August 27, 2021

[LeetCode] Longest Uncommon Subsequence I

Problem: Given two strings a and b, return the length of the longest uncommon subsequence between a and b. If the longest uncommon subsequence does not exist, return -1.

An uncommon subsequence between two strings is a string that is a subsequence of one but not the other.

A subsequence of a string s is a string that can be obtained after deleting any number of characters from s.

  • For example, "abc" is a subsequence of "aebdc" because you can delete the underlined characters in "aebdc" to get "abc". Other subsequences of "aebdc" include "aebdc", "aeb", and "" (empty string).

Example:

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.
Input: a = "aaa", b = "bbb"
Output: 3
Explanation: The longest uncommon subsequences are "aaa" and "bbb".
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.


Approach: The approach is very straight forward. See if both a and b are same then answer is obvious which is -1.

If they are not same then surely longest string will be the uncommon subsequence and its length will be our answer 

For example say a is "abcd" and b is "xyz", if you see both are uncommon sequences but since "abcd" is the longest one and we need to return its length.

Say a = "aaa" and b = "aa" then if you see b is a subsequence a but a is not subsequence of b so a is the longest uncommon sequence and we need to return it's length.


Implementation in C#:

    public int FindLUSlength(string a, string b) 

    {

        if (a == b)

        {

            return -1;

        }    

        return a.Length < b.Length ? b.Length : a.Length;

    }


Complexity: O(n) where n is the length of longest string.

No comments:

Post a Comment