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

相关推荐

11-03 13:18
门头沟学院 Java
包行:平时怎么刷算法题的哇,字节的手撕听说都很难
字节跳动工作体验
点赞 评论 收藏
分享
黑着眼圈看手机:pdd秋招笔试挂了,春招还行吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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