Longest Uncommon Subsequence

Given two strings a and b, return the length of the longest uncommon subsequence between a and b. If no such uncommon subsequence exists, return -1.

An uncommon subsequence between two strings is a string that is a subsequence of exactly one of them.

 

Example 1:

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.

Example 2:

Input: a = "aaa", b = "bbb"
Output: 3
Explanation: The longest uncommon subsequences are "aaa" and "bbb".

Example 3:

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. So the answer would be -1.

 

Constraints:

  • 1 <= a.length, b.length <= 100

  • a and b consist of lower-case English letters.

My Solution

We can solve this by just checking two conditions. If a and b are identical we return -1 because all the subsequences of a are contained in b and vice versa. If they are not identical, we just return the length of the larger of the 2, since the smaller string can never contain the whole larger string. If they are both the same length, we just return either of them because since the strings are not identical either whole string cannot be a subsequence of the other.

Time complexity is O(min(m,n)), where m is the length of a and n is the length of b since we need to check for equality. Space complexity is O(1) since we only require constant extra space.

class Solution {
    public int findLUSlength(String a, String b) {
        if (a.equals(b)) {
            return -1;
        }

        if (a.length() > b.length()) {
            return a.length();
        }
        else {
            return b.length();
        }
    }
}
Previous
Previous

Minimum Absolute Difference in BST

Next
Next

Detect Capital