Given a string s, find the sum of the 3 largest unique prime numbers that can be formed using any of itssubstrings.
Return the sum of the three largest unique prime numbers that can be formed. If fewer than three exist, return the sum of all available primes. If no prime numbers can be formed, return 0.
Note: Each prime number should be counted only once, even if it appears in multiple substrings. Additionally, when converting a substring to an integer, any leading zeros are ignored.
Example 1:
Input:s = "12234"
Output:1469
Explanation:
The unique prime numbers formed from the substrings of "12234" are 2, 3, 23, 223, and 1223.
The 3 largest primes are 1223, 223, and 23. Their sum is 1469.
Example 2:
Input:s = "111"
Output:11
Explanation:
The unique prime number formed from the substrings of "111" is 11.
Since there is only one prime number, the sum is 11.
Constraints:
1 <= s.length <= 10
s consists of only digits.
Solutions
Solution 1: Enumeration + Hash Table
We can enumerate all substrings and check whether they are prime numbers. Since the problem requires us to return the sum of the largest 3 distinct primes, we can use a hash table to store all the primes.
After traversing all substrings, we sort the primes in the hash table in ascending order, and then take the largest 3 primes to calculate the sum.
If there are fewer than 3 primes in the hash table, return the sum of all primes.
The time complexity is \(O(n^2 \times \sqrt{M})\), and the space complexity is \(O(n^2)\), where \(n\) is the length of the string and \(M\) is the value of the largest substring.