剑指Offer34:第一个只出现一次的字符(Java)
参考牛客作者loveNX的题解:https://www.nowcoder.com/questionTerminal/1c82e8cf713b4bbeb2a5b31cf5b0417c?f=discussion
解题思路:
新建一个HashMap,键是字符,值保存字符出现的次数。遍历字符串把信息保存在map集合中。因为结果是要返回位置,所以再一次遍历字符串,判断字符的出现的次数是不是1,是则返回坐标。
这里主要用到两个方法:1. map集合的containsKey(a)方法:判断集合是否包含键a 2. 字符串的charAt(i)方法:指定索引i处的char值
题目描述:
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
java代码:
import java.util.HashMap;
public class Solution {
public int FirstNotRepeatingChar(String str) {
HashMap <Character,Integer> map=new HashMap<Character,Integer>();
for(int i=0;i<str.length();i++){
if(!map.containsKey(str.charAt(i))){
map.put(str.charAt(i),1);
}else{
int a=map.get(str.charAt(i));
map.replace(str.charAt(i),++a);
}
}
for(int i=0;i<str.length();i++){
if(map.get(str.charAt(i))==1){
return i;
}
}
return -1;
}
}