Problem

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 length 3.
  • 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.

https://leetcode.cn/problems/largest-3-same-digit-number-in-string/

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.

Test Cases

1
2
class Solution:
def largestGoodInteger(self, num: str) -> str:
solution_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
import pytest

from solution import Solution


@pytest.mark.parametrize('num, expected', [
("6777133339", "777"),
("2300019", "000"),
("42352338", ""),
])
@pytest.mark.parametrize('sol', [Solution()])
def test_solution(sol, num, expected):
assert sol.largestGoodInteger(num) == expected

Thoughts

Code

solution.py
1
2
3
class Solution:
def largestGoodInteger(self, num: str) -> str:
return max((num[i] for i in range(len(num)-2) if num[i] == num[i+1] == num[i+2]), default='') * 3