java实现

第一个只出现一次的字符

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

管理一个hashmap {char : [出现的次数,最后一次出现的位置]}即可

import java.util.ArrayList;
import java.util.HashMap;
public class Solution {
    public static int FirstNotRepeatingChar(String str) {
        HashMap<String,ArrayList<Integer>> strMap = new HashMap<>();
        //{char : [出现的次数,最后一次出现的位置]}
        //遍历字符串
        if("".equals(str)) {
            return -1;
        }
        ArrayList<Integer> defaultArr = new ArrayList<>();
        defaultArr.add(0);
        defaultArr.add(0);
        for(int i=0;i<str.length();i++) {
            @SuppressWarnings("unchecked")
            ArrayList<Integer> tempArr= strMap.getOrDefault(""+str.charAt(i), (ArrayList<Integer>) defaultArr.clone());
            tempArr.add(0,tempArr.get(0)+1);
            tempArr.add(1,i);
            System.out.println(str.charAt(i)+" "+tempArr.get(0)+" "+tempArr.get(1));
            strMap.put(""+str.charAt(i), tempArr);
        }
        int min=str.length();

        for(String key : strMap.keySet()) {

            ArrayList<Integer> tempArr = strMap.get(key);
            int times = tempArr.get(0);
            int final_pos= tempArr.get(1);

            if(times==1) {
                if(min>final_pos) {
                    min = final_pos;
                }
            }
        }
        return min;
    }
}
全部评论

相关推荐

我的人生算是废了,23届裸辞空档一年,存款只能坚持几个月了,找不到像样的工作了,人生何去何从。
梦想是成为七海千秋:这大环境下为什么要裸辞呀,风险真的挺大的,而且社招的话23届没有太多的竞争力,不过既然已经裸辞了就不要焦虑慢慢找。
点赞 评论 收藏
分享
白火同学:大二有这水平很牛了,可以适当对关键信息加粗一点,比如关键技术、性能指标之类的。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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