Medium
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.
"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 <= 501 <= strs[i].length <= 10strs[i] consists of lowercase English letters.class Solution {
fun findLUSlength(strs: Array<String>): Int {
var maxUncommonLen = -1
for (indx1 in strs.indices) {
var isCommon = false
for (indx2 in strs.indices) {
if (indx2 != indx1 && isSubSequence(strs[indx1], strs[indx2])) {
isCommon = true
break
}
}
if (!isCommon) {
maxUncommonLen = Math.max(maxUncommonLen, strs[indx1].length)
}
}
return maxUncommonLen
}
private fun isSubSequence(str1: String, str2: String): Boolean {
var indx1 = 0
for (indx2 in 0 until str2.length) {
if (str1[indx1] == str2[indx2]) {
indx1++
}
if (indx1 == str1.length) {
return true
}
}
return indx1 == str1.length
}
}