题解 | 第一个只出现一次的字符

第一个只出现一次的字符

https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c?tpId=13&&tqId=11187&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

敲黑板的知识点:

  1. ASCII中大写字母在小写字母前面
  2. ASCII中大写字母的范围是65-90
  3. ASCII中小写字母的范围是97-122
  4. ASCII中大写字母和小写字母之间有6个字符

因此熟悉了上面的规律之后,可以使用一个长度为26+26+6 = 58的数组作为哈希表,但是如果记不住呢,那就像下面这样写:

public class Solution {
    public int FirstNotRepeatingChar(String str) {
        int[] a = new int[26];
        int[] b = new int[26];
        for (char c : str.toCharArray()) {
            if (Character.isUpperCase(c)) {
                a[c-'A']++;
            } else {
                b[c-'a']++;
            }
        }
        int i = 0;
        for (char c : str.toCharArray()) {
            if (Character.isUpperCase(c)) {
                if (a[c-'A'] == 1) return i;
            } else {
                if (b[c-'a'] == 1) return i;
            }
            i++;
        }
        return -1;
    }
}
全部评论

相关推荐

有没有友友知道hr面会问什么我应该反问什么?还有如何防止hr套话啊?还有应该如果催hr推进快一点#字节#OPPO#hr面
牛客989988346号:职业规划,优缺点,为什么选择这个岗,对应聘公司产品的了解和满意度,如果让你改进公司产品你会怎么做,对ai(新技术)的了解,有无其他offer,什么时候能到岗
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务