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

第一个只出现一次的字符

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;
    }
}
全部评论

相关推荐

测试糕手手:社会第一课,随便吹牛逼,直接说四个月,别老实。老实人只会被欺负
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
06-10 23:36
已编辑
首都经济贸易大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务