描述
给定字符串S,找到最大的字母字符,其大写和小写字母均出现在S中,则返回此字母的大写,若不存在则返回"NO"。
1 ≤ l e n ( s ) ≤ 1 0 6 1 \leq len(s) \leq 10^6 1≤len(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