• 图解LeetCode——1796. 字符串中第二大的数字(难度:简单)


    一、题目

    给你一个混合字符串 s ,请你返回 s 中 第二大 的数字,如果不存在第二大的数字,请你返回 -1 。

    混合字符串 由小写英文字母和数字组成。

    二、示例

    2.1> 示例 1:

    【输入】s = "dfa12321afd"
    【输出】2
    【解释】出现在 s 中的数字包括 [1, 2, 3] 。第二大的数字是 2 。

    2.2> 示例 2:

    【输入】s = "abc1111"
    【输出】-1
    【解释】出现在 s 中的数字只包含 [1] 。没有第二大的数字。

    提示:

    • 1 <= s.length <= 500
    • s 只包含小写英文字母和(或)数字。

    三、解题思路

    根据题目描述,要获取第二大的数字,并且字符串s中也存在字母类型的字符,所以我们需要执行如下几个步骤:

    步骤1遍历字符串s中的每个字符,通过Character.isDigit(c)来判断字符是否是数字类型的。
    步骤2】创建两个变量,分别:first(最大值)和second(第二大的值)
    步骤3】如果遍历的字符c,如果满足:first > c && c > second,则更新second=c;如果满足:first < c,则更新second=first 并且 更新first=c
    步骤4】返回second值即可。

    由于本题逻辑比较简单,就不通过画图赘述了。

    四、代码实现

    1. class Solution {
    2.     public int secondHighest(String s) {
    3.         int first = -1, second = -1// first:最大值  second:第二大的值
    4.         char[] sc = s.toCharArray();
    5.         for (char c : sc) {
    6.             if (!Character.isDigit(c)) continue;
    7.             if (first > c && c > second) second = c;
    8.             else if (first < c) {
    9.                 second = first;
    10.                 first = c;
    11.             }
    12.         }
    13.         return second == -1 ? second : second - '0';
    14.     }
    15. }

     今天的文章内容就这些了:

    写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。

    更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

  • 相关阅读:
    创建一个SpringCloud项目
    GraphSAGE-Inductive Representation Learning on Large Graphs
    前台页面查询时间是今天12点可是第二天日期才能查询到今年下午的数据什么原因导致的
    插值查找算法(思路分析) [数据结构][Java]
    Python 教程之运算符(12)a += b 并不总是等价于 a = a + b
    工具 | Windows 功能猎手 (WFH)
    定时任务1
    MySQLJDBC入门与SQL注入
    【OpenCV-Python】教程:3-16 利用Grabcut交互式前景提取
    使用MySQL Workbench进行数据库创建
  • 原文地址:https://blog.csdn.net/qq_26470817/article/details/128161737