carloscn / structstudy

Leetcode daily trainning by using C/C++/RUST programming.
4 stars 1 forks source link

leetcode2264: Largest 3-Same-Digit Number in String #370

Open carloscn opened 1 year ago

carloscn commented 1 year ago

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.

carloscn commented 1 year ago

Analysis

pub fn largest_good_integer(num: &str) -> String
{
    let mut ret:String = String::new();
    if num.is_empty() {
        return ret;
    }

    let mut max_val:u8 = u8::MIN;
    let num_vec:Vec<char> = num.chars().collect();
    for i in 0..num_vec.len() - 2 {
        if (num_vec[i] == num_vec[i + 1]) &&
           (num_vec[i] == num_vec[i + 2]) {
            max_val = (num_vec[i] as u8).max(max_val);
        }
    }

    if max_val != u8::MIN {
        for _i in 0..3 {
            ret.push(max_val as char);
        }
    }

    return ret;
}
carloscn commented 1 year ago

Code

https://review.gerrithub.io/c/carloscn/structstudy/+/1170053 https://github.com/carloscn/structstudy/commit/8bf595c3f358a0e725665d36facc91a2e3ff9f20