//return the index of firstShowOnlyOnceElement public static int find(String str){ if(str==null||str.length()==0){ return -1; } int len=str.length(); char[] letters=str.toCharArray(); //In java,'char' is 16 bits,so there are 2^16 characters. //But we deal with only the 26 English letters in this case. int[] count=new int[26];//the 'HashTable' for(int i=0;i<len;i++){ char curChar=letters[i]; count[curChar-'a']++; } for(int i=0;i<len;i++){ char curChar=letters[i];//iterate the string,not the HashTable if(count[curChar-'a']==1){ return i; } } return -1; } }