Longest Uncommon Subsequence II

Given an array of strings strs, return the length of the longest uncommon subsequence between them. If the longest uncommon subsequence does not exist, return -1.

An uncommon subsequence between an array of strings is a string that is a subsequence of one string but not the others.

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 1:

Input: strs = ["aba","cdc","eae"]
Output: 3

Example 2:

Input: strs = ["aaa","aaa","aa"]
Output: -1

 

Constraints:

  • 2 <= strs.length <= 50
  • 1 <= strs[i].length <= 10
  • strs[i] consists of lowercase English letters.
SOLUTION:
class Solution:
    def isSub(self, s1, s2):
        n = len(s1)
        i = 0
        for c in s2:
            if i >= n:
                break
            if s1[i] == c:
                i += 1
        return i == n
    
    def findLUSlength(self, strs: List[str]) -> int:
        n = len(strs)
        strs.sort(key = lambda s: -len(s))
        for i in range(n):
            valid = True
            for j in range(n):
                if i != j and self.isSub(strs[i], strs[j]):
                    valid = False
                    break
            if valid:
                return len(strs[i])
        return -1

Comments

Popular posts from this blog

Encrypt and Decrypt Strings

Degree of an Array

Minimum Sum of Four Digit Number After Splitting Digits