carloscn / structstudy

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

leetcode1903: Largest Odd Number in String #304

Open carloscn opened 1 year ago

carloscn commented 1 year ago

Description

You are given a string num, representing a large integer. Return the largest-valued odd integer (as a string) that is a non-empty substring of num, or an empty string "" if no odd integer exists.

A substring is a contiguous sequence of characters within a string.

Example 1:

Input: num = "52" Output: "5" Explanation: The only non-empty substrings are "5", "2", and "52". "5" is the only odd number.

Example 2:

Input: num = "4206" Output: "" Explanation: There are no odd numbers in "4206".

Example 3:

Input: num = "35427" Output: "35427" Explanation: "35427" is already an odd number.

Constraints:

1 <= num.length <= 105 num only consists of digits and does not contain any leading zeros.

carloscn commented 1 year ago

Analysis

pub fn largest_odd_number(num: &str) -> String
{
    if num.len() < 1 {
        return String::new();
    }

    let mut num_vec:Vec<char> = num.chars().collect();

    while num_vec.len() != 0 {
        if num_vec[num_vec.len() - 1] as u8 & 1 == 1 {
            break;
        }
        num_vec.remove(num_vec.len() - 1);
    }

    let ret:String = num_vec.into_iter().collect();

    return ret;
}
carloscn commented 1 year ago

Code

https://review.gerrithub.io/c/carloscn/structstudy/+/1167437 https://github.com/carloscn/structstudy/commit/269c5af36da00830bdfd9a7fa17b11976ea5bdb9