Welcome to Subscribe On Youtube

Formatted question description: https://leetcode.ca/all/1903.html

1903. Largest Odd Number in String

Level

Easy

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 <= 10^5
  • num only consists of digits and does not contain any leading zeros.

Solution

Any number that ends with an odd digit is an odd number. If a digit in num is an odd number, then the substring from index 0 to the current digit is ghe largest odd number that ends with the digit. Therefore, find the rightmost odd digit in nums, and return the substring from index 0 to the rightmost odd digit.

  • class Solution {
        public String largestOddNumber(String num) {
            for (int i = num.length() - 1; i >= 0; i--) {
                char c = num.charAt(i);
                int digit = c - '0';
                if (digit % 2 != 0)
                    return num.substring(0, i + 1);
            }
            return "";
        }
    }
    
    ############
    
    class Solution {
        public String largestOddNumber(String num) {
            for (int i = num.length() - 1; i >= 0; --i) {
                int c = num.charAt(i) - '0';
                if ((c & 1) == 1) {
                    return num.substring(0, i + 1);
                }
            }
            return "";
        }
    }
    
  • // OJ: https://leetcode.com/problems/largest-odd-number-in-string/
    // Time: O(N)
    // Space: O(1)
    class Solution {
    public:
        string largestOddNumber(string s) {
            int i = s.size() - 1;
            while (i >= 0 && (s[i] - '0') % 2 == 0) --i;
            return s.substr(0, i + 1);
        }
    };
    
  • class Solution:
        def largestOddNumber(self, num: str) -> str:
            for i in range(len(num) - 1, -1, -1):
                if (int(num[i]) & 1) == 1:
                    return num[: i + 1]
            return ''
    
    ############
    
    # 1903. Largest Odd Number in String
    # https://leetcode.com/problems/largest-odd-number-in-string/
    
    class Solution:
        def largestOddNumber(self, nums: str) -> str:
            res = None
            
            for i,x in enumerate(nums):
                if int(x) & 1:
                    res = nums[:i + 1]
            
            return "" if not res else res
    
    
  • func largestOddNumber(num string) string {
    	for i := len(num) - 1; i >= 0; i-- {
    		c := num[i] - '0'
    		if (c & 1) == 1 {
    			return num[:i+1]
    		}
    	}
    	return ""
    }
    
  • /**
     * @param {string} num
     * @return {string}
     */
    var largestOddNumber = function (num) {
        let n = num.length;
        for (let j = n - 1; j >= 0; j--) {
            if (num.charAt(j) & (1 == 1)) {
                return num.slice(0, j + 1);
            }
        }
        return '';
    };
    
    
  • function largestOddNumber(num: string): string {
        for (let i = num.length - 1; ~i; --i) {
            if (Number(num[i]) & 1) {
                return num.slice(0, i + 1);
            }
        }
        return '';
    }
    
    

All Problems

All Solutions