1903 Largest Odd Number in String - Easy

Problem:

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.

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.

Problem Analysis:

  • Simple for loop starting from the last digit

  • return result if the current digit is odd. if no odd digit is found, return an empty string

  • Slight optimisation can be to hard code [1,3,5,7,9] to avoid converting the str to digit for every element.

  • Time Complexity: O(n) worse case where n is the length of the entire string

  • Space Complexity: O(1)

Solutions:

class Solution:
    def largestOddNumber(self, num: str) -> str:
        for i in range(len(num) - 1, -1, -1):
            if int(num[i]) % 2 != 0:
                return num[:i + 1]
        return ""

Similar Questions