Welcome to Subscribe On Youtube
2264. Largest 3-Same-Digit Number in String
Description
You are given a string num
representing a large integer. An integer is good if it meets the following conditions:
- It is a substring of
num
with length3
. - It consists of only one unique digit.
Return the maximum good integer as a string or an empty string ""
if no such integer exists.
Note:
- A substring is a contiguous sequence of characters within a string.
- There may be leading zeroes in
num
or a good integer.
Example 1:
Input: num = "6777133339" Output: "777" Explanation: There are two distinct good integers: "777" and "333". "777" is the largest, so we return "777".
Example 2:
Input: num = "2300019" Output: "000" Explanation: "000" is the only good integer.
Example 3:
Input: num = "42352338" Output: "" Explanation: No substring of length 3 consists of only one unique digit. Therefore, there are no good integers.
Constraints:
3 <= num.length <= 1000
num
only consists of digits.
Solutions
Solution 1: Enumeration
We can enumerate each digit $i$ from large to small, where $0 \le i \le 9$, and then check whether the string $s$ consisting of three consecutive $i$ is a substring of $num$. If it is, we directly return $s$.
If we have enumerated all the possible values of $i$ and still haven’t found a substring that satisfies the condition, we return an empty string.
The time complexity is $O(10 \times n)$, where $n$ is the length of the string $num$. The space complexity is $O(1)$.
-
class Solution { public String largestGoodInteger(String num) { for (int i = 9; i >= 0; i--) { String s = String.valueOf(i).repeat(3); if (num.contains(s)) { return s; } } return ""; } }
-
class Solution { public: string largestGoodInteger(string num) { for (char i = '9'; i >= '0'; --i) { string s(3, i); if (num.find(s) != string::npos) { return s; } } return ""; } };
-
class Solution: def largestGoodInteger(self, num: str) -> str: for i in range(9, -1, -1): if (s := str(i) * 3) in num: return s return ""
-
func largestGoodInteger(num string) string { for c := '9'; c >= '0'; c-- { if s := strings.Repeat(string(c), 3); strings.Contains(num, s) { return s } } return "" }
-
function largestGoodInteger(num: string): string { for (let i = 9; i >= 0; i--) { const s = String(i).repeat(3); if (num.includes(s)) { return s; } } return ''; }