--------------------------------------------------
最开始的想法是统计每个字符的出现次数和位置,如下:
AC代码:
public class Solution { public int firstUniqChar(String s) { Count c[]=new Count[26]; for(int i=0;i<s.length();i++){ int index=s.charAt(i)-‘a‘; if(c[index]==null) c[index]=new Count(i); c[index].count++; } int min=s.length(); for(int i=0;i<c.length;i++){ if(c[i]!=null && c[i].count==1 && c[i].firstIndex<min) min=c[i].firstIndex; } return min==s.length()?-1:min; } private class Count{ int count; int firstIndex; public Count(int firstIndex){ this.firstIndex=firstIndex; } } }
但是这样子代码略显拖沓,干脆只记录字符的出现次数,然后再从头扫描如果出现次数为1就表明这是要找的位置了,代码如下:
AC代码:
public class Solution { public int firstUniqChar(String s) { int c[]=new int[26]; for(int i=0;i<s.length();i++) c[s.charAt(i)-‘a‘]++; for(int i=0;i<s.length();i++) if(c[s.charAt(i)-‘a‘]==1) return i; return -1; } }
题目来源: https://leetcode.com/problems/first-unique-character-in-a-string/
LeetCode之387. First Unique Character in a String
原文:http://www.cnblogs.com/cc11001100/p/5998660.html