Skip to content

Latest commit

 

History

History

1903.Largest Odd Number in String

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

English Version

题目描述

给你一个字符串 num ,表示一个大整数。请你在字符串 num 的所有 非空子字符串 中找出 值最大的奇数 ,并以字符串形式返回。如果不存在奇数,则返回一个空字符串 ""

子字符串 是字符串中的一个连续的字符序列。

 

示例 1:

输入:num = "52"
输出:"5"
解释:非空子字符串仅有 "5"、"2" 和 "52" 。"5" 是其中唯一的奇数。

示例 2:

输入:num = "4206"
输出:""
解释:在 "4206" 中不存在奇数。

示例 3:

输入:num = "35427"
输出:"35427"
解释:"35427" 本身就是一个奇数。

 

提示:

  • 1 <= num.length <= 105
  • num 仅由数字组成且不含前导零

解法

从后往前遍历字符串中的每个数字,遇到奇数则直接返回结果。若遍历结束仍未遇到奇数,返回空字符串。

Python3

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

Java

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

JavaScript

/**
 * @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 '';
};

C++

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

Go

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 ""
}

...