返回顶部

2309

给你一个由英文字母组成的字符串 s ,请你找出并返回 s 中的 最好 英文字母。返回的字母必须为大写形式。如果不存在满足条件的字母,则返回一个空字符串。

最好 英文字母的大写和小写形式必须  在 s 中出现。

英文字母 b 比另一个英文字母 a 更好 的前提是:英文字母表中,b 在 a 之  出现。

输入:s = "arRAzFif"
输出:"R"
解释:
字母 'R' 是大写和小写形式都出现的最好英文字母。
注意 'A' 和 'F' 的大写和小写形式也都出现了,但是 'R' 比 'F' 和 'A' 更好。

第一遍
复制代码
class Solution(object):
    def greatestLetter(self, s):
        """
        :type s: str
        :rtype: str
        """
        bei=set()
        for char in s:
            if(char.lower()in s and char.upper()in s):
                bei.add(char.upper())
        if(len(bei)==0):
            return ""
        else:      
            return max(bei)
复制代码

bei存储备选的字母(即符合大小写都出现的字母) 用集合实现去重 实际上不去应该也可以

 

第二遍
复制代码
class Solution(object):
    def greatestLetter(self, s):
        """
        :type s: str
        :rtype: str
        """
        bei=set()
        hou=set()
        for cha in s:
            hou.add(cha)
        for char in hou:
            if(char.lower()in s and char.upper()in s):
                bei.add(char.upper())
        if(len(bei)==0):
            return ""
        else:      
            return max(bei)
复制代码

先进行一遍筛选 利用集合去重 可减少比较的次数

 

 

 

 速度有提升 内存太差劲了

第三遍


复制代码
class Solution(object):
    def greatestLetter(self, s):
        """
        :type s: str
        :rtype: str
        """
        hou=set()
        r=''
        for cha in s:
            hou.add(cha)
        for char in hou:
            if(char.lower()in s and char.upper()in s):
                if(char.upper()>r):
                    r=char.upper()
        return r
复制代码
不再用单独的集合存储 实时更新要返回的r

 

 

 

 

 

posted @   YuhangLiuCE  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示