【LeetCode每日一题】2023-01-27 兼具大小写的最好英文字母(简单)


题目链接

https://leetcode.cn/problems/greatest-english-letter-in-upper-and-lower-case/

题目大意

给定一个字符串,如果字符串中某一字母的大小写同时出现,则输出该字母的大写;如果多个字母的大小写同时出现,那么,则输出ASCII最大的字母的大写

通过代码

使用两个标记数组,用于标记26个字母的大小写的出现情况

class Solution {
    public String greatestLetter(String s) {
        boolean[] lower = new boolean[26];
        boolean[] upper = new boolean[26];

        for (int i = 0; i < s.length(); i++) {
            char tmp = s.charAt(i);
            if (tmp >= 'a' && tmp <= 'z' && !lower[tmp-'a']) {
                lower[tmp - 'a'] = true;
            } else if (tmp >= 'A' && tmp <= 'Z' && !upper[tmp-'A'] ) {
                upper[tmp - 'A'] = true;
            }
        }

        int index = -1;
        for (int i = 0; i < 26; i++) {
            if (lower[i] && upper[i]) {
                index = i;
            }
        }
        return index != -1 ? (char) ('A' + index) + "" : "";
    }
}

官方答案

使用哈希表保存字符串s出现的字符。

class Solution {
    public String greatestLetter(String s) {
        Set<Character> set = new HashSet<>();
        for (int i = 0; i < s.length(); i++) {
            set.add(s.charAt(i));
        }
        for (int i = 25; i >= 0; i--) {
            if (set.contains((char) ('A' + i)) && set.contains((char) ('a' + i))) {
                return String.valueOf((char) ('A' + i));
            }
        }
        return "";
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值