利用LinkedHashMap的特性:保持插入的顺序

第一个只出现一次的字符

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

import java.util.*;
import java.util.Map.Entry;
public int FirstNotRepeatingChar(String str) {
        if(str==null||str.equals("")||str.length()==1)
            return -1;
        Map<Character,Integer> map = new LinkedHashMap<Character, Integer>();
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);//key
            if(!map.containsKey(c)){//如果不存在key
                map.put(c,i);
            }else{//修改值,索引变为-1的表示已经出现过一次了
                map.put(c,-1);
            }
        }
        //利用LinkedHashMap的特性按插入的顺序从头开始找索引不是负数的值,并返回
        for(Entry<Character,Integer> entry:map.entrySet()){
			if(entry.getValue()>=0)
                return entry.getValue();
		}
        //没有找到说明都重复,返回-1
        return -1;
    }

全部评论

相关推荐

2024-12-21 00:21
南京理工大学 C++
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
02-03 10:14
求各位大佬帮忙改改简历提提建议
黑皮白袜臭脚体育生:简历条例统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写 可以看我帖子简历话术写法
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务