字符串中第二大的数字(遍历)
创始人
2024-03-15 09:28:30
0

力扣链接:力扣

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

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

示例 1:

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

示例 2:

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

提示:

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

示例代码1: 【自己写】

class Solution:def secondHighest(self, s: str) -> int:num = []for i in s:if i.isdigit():num.append(i)num = list(set(num))if len(num) < 2:return -1else:num.remove(max(num))return int(max(num))

示例代码2:

class Solution:def secondHighest(self, s: str) -> int:a = b = -1for i in s:if i.isdigit():c = int(i)if c > a:a, b = c, aelif b < c < a:b = creturn b

时间复杂度 O(n),空间复杂度 O(1)。其中 n 为字符串 s 的长度。

示例代码3:

class Solution:def secondHighest(self, s: str) -> int:count = 0for i in range(9, -1, -1):if str(i) in s:count += 1if count == 2:return ireturn -1

        遍历9~0的降序数组,判断数字是否在字符串s中,同时用一个变量count维护遇到降序数字的次数.在已经遇到一个最大数字的情况下,再次遇到在字符串中的数字,即是第二大的数字.
如果遍历完数组仍然没有满足条件,则返回-1.

相关内容

热门资讯

【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
ChatGPT 怎么用最新详细... ChatGPT 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...