comments | difficulty | edit_url | rating | source | tags | |||
---|---|---|---|---|---|---|---|---|
true |
Easy |
1248 |
Weekly Contest 246 Q1 |
|
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.
We can traverse the string from the end to the beginning, find the first odd number, and then return the substring from the beginning to this odd number. If there is no odd number, return an empty string.
The time complexity is
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 ''
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 "";
}
}
class Solution {
public:
string largestOddNumber(string num) {
for (int i = num.size() - 1; i >= 0; --i) {
int c = num[i] - '0';
if ((c & 1) == 1) {
return num.substr(0, i + 1);
}
}
return "";
}
};
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 ""
}
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 '';
}
/**
* @param {string} num
* @return {string}
*/
var largestOddNumber = function (num) {
for (let i = num.length - 1; ~i; --i) {
if (Number(num[i]) & 1) {
return num.slice(0, i + 1);
}
}
return '';
};