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

第一个只出现一次的字符

http://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c

因为题目说了字符串只有字母类型,那么可以使用2个数组,26个字母大小写一共需要52个位来存字母出现的次数,另一个数组存字母出现的位置,循环一遍将出现的次数和位置都存进数组里,最后遍历一遍字母出现次数的数字,只要次数是1就更新res位置,最后得到的就是位置最前的。 时间复杂度O(N),空间复杂度O(52*2)--->O(1)

import java.util.*;
public class Solution {
    public int FirstNotRepeatingChar(String str) {
        int[] alph = new int[52];
        int[] alphPosi = new int[52];
        int res = -1;
        int t;
        for(int i = 0; i < str.length(); i++){
            char s = str.charAt(i);
            if(s >= 'A' && s <= 'Z'){
                t = s - 'A';
                alph[t]++;
                alphPosi[t] = i;
            }else if(s >= 'a' && s <= 'z'){
                t = s - 'a' + 26;
                alph[t]++;
                alphPosi[t] = i;
            }
        }
        
        for(int i = 0; i < 52; i++){
            if(alph[i] == 1){
                res = res == -1 ? alphPosi[i] : res > alphPosi[i] ? alphPosi[i] : res;
            }
        }
        return res;
    }
}
全部评论

相关推荐

07-09 18:33
门头沟学院 Java
这么逆天每年都有人去???&nbsp;填多益网申就是大型的服从性测试
鲁大牛:辅导员在群里发了这个公司我就申了一下。网申居然要写当场开摄像头写两篇不少于三百字的作文。太逆天了
点赞 评论 收藏
分享
07-04 21:23
已编辑
东莞城市学院 后端
秋招和春招只收到几个中大厂的笔试,本人比较菜,感觉大厂的笔试太难,算法题不能全部做出来就没过了,但是CVTE和小天才的感觉不是很难,基本上都做出来了,笔试还是挂了。Boss上投了Java后端开发都没有回音,boss上有面试机会都是C#工控软件开发方向的,但是这个方向不太懂,资料又少,面试的表现有点差,现在还是想看看Java这边,面试的时候比较有把握点。想请教一下,这份简历还有什么问题,一直没什么机会,还有什么地方要修改的。
程序员小白条:学历太差,民办和公办,外包还得区分的,这个学历+这个简历,没的办法,除非你有人脉,太难了,这环境,何况你都毕业了,连一段实习都没,肯定没公司会挑选了,没竞争力,开发才招几个人,跟你竞争的可不是二本,三本的人哦,何况你在二本,三本里面也排名不高
投递小天才等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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