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

相关推荐

2025-12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞 评论 收藏
分享
头像
2025-12-27 13:01
三峡大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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