返回介绍

solution / 1900-1999 / 1903.Largest Odd Number in String / README

发布于 2024-06-17 01:03:12 字数 2936 浏览 0 评论 0 收藏 0

1903. 字符串中的最大奇数

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 仅由数字组成且不含前导零

解法

方法一:逆序遍历

我们可以从后往前遍历字符串,找到第一个奇数,然后返回从开头到该奇数的子字符串即可。如果不存在奇数,则返回空字符串。

时间复杂度 $O(n)$,其中 $n$ 是字符串 $num$ 的长度。忽略答案字符串的空间消耗,空间复杂度 $O(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 ''
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 '';
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文