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 ''; }