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 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.

 

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 '';
    }
    
    

All Problems

All Solutions