leecode第15天

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

# 混合字符串 由小写英文字母和数字组成。
class Solution(object):
    def secondHighest(self, s):
        """
        找到给定字符串中第二大的数字。如果不存在第二大的数字,则返回 -1。

        :type s: str
        :rtype: int
        """
        # 将字符串转换为字符列表以便进一步处理
        ls = list(s)
        lst = []
        # 遍历字符列表,查找并转换数字字符为整数,然后存储在另一个列表中
        for char in ls:
            if char.isdigit():
                lst.append(int(char))
        # 移除列表中的重复元素以找到唯一的数字
        lst = list(set(lst))
        # 如果找到的数字数量少于2个,返回 -1,因为无法找到第二大的数字
        if len(lst) < 2:
            return -1
        else:
            # 对数字列表进行排序以便有序访问
            lst.sort()

            # 如果列表中最后两个元素相等,说明没有唯一的第二大数字,返回 -1
            if lst[-1] == lst[-2]:
                return -1
            else:
                # 返回列表中的第二大数字
                return lst[-2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值