Problem#
Given two strings a
and b
, return _the length of thelongest 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 .
Examples#
Example 1#
1
2
3
4
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#
1
2
3
Input: a = "aaa" , b = "bbb"
Output: 3
Explanation: The longest uncommon subsequences are "aaa" and "bbb" .
Example 3#
1
2
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.
Solution#
Method 1 – Simple Comparison#
Intuition#
If the two strings are not equal, the longer string itself is an uncommon subsequence, since it cannot be a subsequence of the other. If they are equal, there is no uncommon subsequence.
Approach#
Compare the two strings a
and b
.
If they are equal, return -1 (no uncommon subsequence).
Otherwise, return the length of the longer string.
Code#
Cpp
Go
Java
Kotlin
Python
Rust
Typescript
1
2
3
4
5
6
class Solution {
public :
int findLUSlength(string a, string b) {
return a == b ? - 1 : max(a.size(), b.size());
}
};
1
2
3
4
5
6
7
8
9
func findLUSlength (a string , b string ) int {
if a == b {
return - 1
}
if len(a ) > len(b ) {
return len(a )
}
return len(b )
}
1
2
3
4
5
class Solution {
public int findLUSlength (String a, String b) {
return a.equals (b) ? - 1 : Math.max (a.length (), b.length ());
}
}
1
2
3
4
5
class Solution {
fun findLUSlength (a: String, b: String): Int {
return if (a == b) -1 else maxOf(a.length, b.length)
}
}
1
2
3
class Solution :
def findLUSlength (self, a: str, b: str) -> int:
return - 1 if a == b else max(len(a), len(b))
1
2
3
4
5
impl Solution {
pub fn find_lus_length (a: String, b: String) -> i32 {
if a == b { - 1 } else { a.len().max(b.len()) as i32 }
}
}
1
2
3
4
5
class Solution {
findLUSlength (a : string , b : string ): number {
return a === b ? - 1 : Math.max (a .length , b .length );
}
}
Complexity#
⏰ Time complexity: O(n)
, where n is the length of the longer string, for string comparison.
🧺 Space complexity: O(1)
, as no extra space is used.