C++实现 LeetCode 1796:找出字符串中第二大的数字

山海之间
山海之间
发布时间:2026-10-15| 6人浏览过
原创

在 LeetCode 第 1796 题中,我们需要处理包含小写字母和数字的混合字符串,目标是找到其中严格小于最大值的最大整数。通过创建一个固定大小的布尔数组来标记数字的出现情况,可以从后向前仅需一次线性扫描便得出结论。

问题分析与逻辑梳理

本题的核心在于理解“第二大”的定义。它指的是集合中排在第二位的数值,例如若字符串中包含 {1, 2, 3},则第二大的是 2;若仅存在 {1},则没有第二大数字,应返回 -1。

关键点:重复的数字只算一次。例如输入 s = "abc1111" 时,集合中只有 {1},不存在比 1 小的正整数(在 0-9 范围内且必须存在),因此结果为 -1。

C++ 代码实现

以下代码展示了如何提取字符并判断逻辑,使用了固定容量的 bool 数组来提高效率:

class Solution {
public:
    int secondHighest(string& s) {
        // 记录 0-9 是否出现
        bool digits[10] = {false};
        
        for (char c : s) {
            if (c >= '0' && c <= '9') {
                digits[c - '0'] = true;
            }
        }
        
        bool foundFirst = false; // 记录是否已发现最大值
        for (int i = 9; i >= 0; i--) {
            if (digits[i]) {
                if (foundFirst) {
                    // 第二次遇到存在的数字,即为第二大
                    return i;
                } else {
                    // 第一次遇到的数字,标记为最大值
                    foundFirst = true;
                }
            }
        }
        return -1;
    }
};
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。