2023-12-07 Daily Challenge

Today I have done leetcode's December LeetCoding Challenge with cpp.

December LeetCoding Challenge 7

Description

Largest Odd Number in String

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.

Solution

class Solution {
public:
  string largestOddNumber(string num) {
    int begin = 0;
    while(begin < num.length() && !(num[begin] - '0')) {
      begin += 1;
    }
    int end = begin - 1;
    for(int i = begin; i < num.length(); ++i) {
      if((num[i] - '0') & 1) {
        end = i;
      }
    }
    return num.substr(begin, end - begin + 1);
  }
};

// Accepted
// 196/196 cases passed (32 ms)
// Your runtime beats 31.44 % of cpp submissions
// Your memory usage beats 24.39 % of cpp submissions (15.4 MB)