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