【字符串与循环】最大字母(简单)

描述
给定字符串S,找到最大的字母字符,其大写和小写字母均出现在S中,则返回此字母的大写,若不存在则返回"NO"。

1 ≤ l e n ( s ) ≤ 1 0 6 1 \leq len(s) \leq 10^6 1len(s)106

样例

输入: S = "admeDCAB"
输出: "D"

输入: S = "adme"
输出: "NO"

题解:
这个题的关键是,判断大小写字母是否都在S中,为此建立一个长度60位的数组,用于存放s中的字母
a ~ z存为 0 ~ 25
A ~ Z存为 26 ~ 51

class Solution:
    """
    @param s: a string
    @return: a string
    """
    def key(self, c):
        if c >= 'a' and c <= 'z':
            return ord(c) - ord('a')
        else:
            return 26 + ord(c) - ord('A')

    def largestLetter(self, s):
        # write your code here
        nums = [0] * 60
        for i in s:
            k = self.key(i)
            nums[k] += 1             # nums[k]表示的是字母出现的次数
        ans = "NO"
        for i in range(25,-1,-1):
            if nums[i] and nums[26+i]:      # 如果nums[i]和nums[26+i]不为空不为0,则表明大小写字母同时存在于s中
                ans = chr(i + ord('A'))
                break
        return ans
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dataloading...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值