题目描述:
Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.
Examples:
s = "leetcode" return 0. s = "loveleetcode", return 2.
中文理解:给出一个字符串,找出该字符串中第一次出现次数为1的字符的下标。
解题思路:使用hash的思想,使用一个数组结构来存储每个字符出现的次数,重新遍历字符串,出现第一次出现次数为1的返回该下标。
代码(java):
class Solution {
public int firstUniqChar(String s) {
HashMap<Character,Integer> map=new HashMap<Character,Integer>();
for(char ch:s.toCharArray()){
if(map.keySet().contains(ch)){
map.put(ch,map.get(ch)+1);
}
else{
map.put(ch,1);
}
}
for(int i=0;i<s.length();i++){
if(map.get(s.charAt(i))==1)return i;
}
return -1;
}
}
//使用数组来存储字母出现次数
class Solution {
public int firstUniqChar(String s) {
int []count=new int[26];
int len=s.length();
for(int i=0;i<len;i++){
count[s.charAt(i)-'a']++;
}
for(int i=0;i<len;i++){
if(count[s.charAt(i)-'a']==1)return i;
}
return -1;
}
}