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

第一个只出现一次的字符

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

1.先遍历一次字符串,得到存储字符+出现次数的hashmap,和第一次出现的字符的集合(按顺序)ArrayLst
2.遍历字符集合,去hashmap中取次数,如果为1,结束遍历,得到第一次出现的字符
3.再遍历字符串,得到第一次出现的字符的索引

import java.util.ArrayList;
import java.util.HashMap;
public class Solution {
    public int FirstNotRepeatingChar(String str) {
        //记录一下字符出现的顺序
        ArrayList result=new ArrayList();
        //消重的思路,你想保序的话,就用set做判定,用list接收,否则直接用set接收
        //用hashmap
        HashMap res=new HashMap();
        for (int i = 0; i < str.length(); i++) {
            char now=str.charAt(i);
            //如果第一次取得该字符
            if(res.get(now)==null){
                result.add(now);
                res.put(now,1);
            }
            //如果不是第一次,次数加一
            else {
                res.put(now,res.get(now)+1);
            }
        }
        //得到第一次出现的字符
        Character fin = null;
        for (Character x:result) {
            if(res.get(x)==1){
                fin=new Character(x);
                break;
            }
        }
        //得不到返回-1
        if(fin==null){
            return -1;
        }
        int location = 0;
        for (int i = 0; i <str.length() ; i++) {
            if(str.charAt(i)==fin){
                location=i;
            }
        }
        return location;
    }
}
全部评论

相关推荐

2024-12-12 15:07
已编辑
门头沟学院 Java
秋招end未来可期:实习内容太多了,抓不住重点,关键还是用了什么技术解决了什么问题,得到了什么样的效果,另外专业技能有点少,可以网上去找一些别人的简历来参考参考。整体内容够了,估计就是一些内容调整了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务