首页 > 其他分享 >2309

2309

时间:2023-01-27 21:55:54浏览次数:36  
标签:2309 upper bei 英文字母 char hou str

给你一个由英文字母组成的字符串 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

 

 

 

 

 

标签:2309,upper,bei,英文字母,char,hou,str
From: https://www.cnblogs.com/LYoungH/p/17069406.html

相关文章

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