题目描述:https://leetcode-cn.com/problems/first-unique-character-in-a-string/
解题代码:
class Solution {
public int firstUniqChar(String s) {
if(s.length() == 1){
return 0;
}
// 开始定义的是HashMap对象
// 由于HashMap输出乱序,无法满足‘第一个’不重复的字符这一要求
// 因此使用LinkedHashMap 按照输入顺序或迭代输出顺序输出
// char int 使用其对应封装类
Map<Character, Integer> charnum = new LinkedHashMap<Character, Integer>();
for(int i=0; i<s.length(); i++){
Character c = s.charAt(i); // 遍历字符串中单个字符
if(charnum.containsKey(c)){ // 判断Map中是否包含某个key值
charnum.put(c, new Integer(charnum.get(c).intValue()+1)); // 修改键对应值
}else{
charnum.put(c, 1); //为Map添加键值对
}
}
for(Map.Entry<Character, Integer> entry : charnum.entrySet()){ // 遍历Map
if(entry.getValue()==1){ // 获得值
for(int i=0; i<s.length(); i++){
if(entry.getKey() == s.charAt(i)){ // 获得键
return i;
}
}
}
}
return -1;
}
链接整理:
1.判断Map中是否存在某个key:https://blog.csdn.net/keke921231/article/details/51690125
2.Map中如何更改value的值:https://blog.csdn.net/DreamWeaver_zhou/article/details/73839303
3.如何遍历Map:https://blog.csdn.net/tjcyjd/article/details/11111401
4.HashMap数据类型:https://blog.csdn.net/yefengzhichen/article/details/51071922
5.Java中的Character和char:https://blog.csdn.net/jiangxindu1/article/details/39584557
6.Java中Integer和int之间的转换:https://blog.csdn.net/jisuanjiguoba/article/details/80235388
7.Java中Map值如何保持顺序不变:http://quanzhan.applemei.com/webStack/TWpBeE13PT0=