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

第一个只出现一次的字符

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

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
Noel_:中石油是这样的 哥们侥幸混进免笔试名单 一看给我吓尿了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务