【LeetCode】兼具大小写的最好英文字母 Java 题解
题目描述
给你一个由英文字母组成的字符串 s ,请你找出并返回 s 中的 最好 英文字母。返回的字母必须为大写形式。如果不存在满足条件的字母,则返回一个空字符串。
最好 英文字母的大写和小写形式必须 都 在 s 中出现。
英文字母 b 比另一个英文字母 a 更好 的前提是:英文字母表中,b 在 a 之 后 出现。
复制代码
思路分析
今天的算法题目是字符串处理题目,题目比较长,分析之后,核心如下。1. 返回字符为大写字符或者空字符串。 2. 最好 英文字母的大写和小写形式必须 都 在 s 中出现。3. 字母按照自然序列排序,需要返回自然序大的字母。
根据上述分析,首先我们使用 hashset 记录每一个出现的字符。然后可以使用 ASCII 的知识,对出现的字符进行处理。什么是 ASCII?ASCII 码是一套编码规范。ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。
其中 ASCII 32~126(共 95 个)是字符(32 是空格),其中 48~57 为 0 到 9 十个阿拉伯数字。65~90 为 26 个大写英文字母,97~122 号为 26 个小写英文字母,其余为一些标点符号、运算符号等。
根据 ASCII 码知识,字符大小写的 ASCII 码的差值是 32。我们从 90 开始便利,找打符合题目要求的字符。实现代码如下,供参考。
通过代码
复制代码
总结
上述算法的时间复杂度是 O(n),空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/60fe79c37d574fdc2b752ddba】。文章转载请联系作者。
评论