comments | difficulty | edit_url | rating | source | tags | |||
---|---|---|---|---|---|---|---|---|
true |
简单 |
1248 |
第 246 场周赛 Q1 |
|
给你一个字符串 num
,表示一个大整数。请你在字符串 num
的所有 非空子字符串 中找出 值最大的奇数 ,并以字符串形式返回。如果不存在奇数,则返回一个空字符串 ""
。
子字符串 是字符串中的一个连续的字符序列。
示例 1:
输入:num = "52" 输出:"5" 解释:非空子字符串仅有 "5"、"2" 和 "52" 。"5" 是其中唯一的奇数。
示例 2:
输入:num = "4206" 输出:"" 解释:在 "4206" 中不存在奇数。
示例 3:
输入:num = "35427" 输出:"35427" 解释:"35427" 本身就是一个奇数。
提示:
1 <= num.length <= 105
num
仅由数字组成且不含前导零
我们可以从后往前遍历字符串,找到第一个奇数,然后返回从开头到该奇数的子字符串即可。如果不存在奇数,则返回空字符串。
时间复杂度
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 '';
};