答えを見ずに10分以上質問を終えるのは初めてです。
私の考えは、文字の出現回数を格納するために、長さが26のint配列を作成することです。
最初に文字列を1回トラバースし、出現回数を数えます。
文字列をもう一度トラバースして、最初の値が1である回数に対応する文字を見つけます。
答えに使用したハッシュマップはほとんど同じなので、もう書きません。
public char firstUniqChar(String s) {
if(s.equals("")){
return ' ';
}
char[] s_c = s.toCharArray();
int[] s_c_count = new int[26];
for(int count = 0; count<26;count++){
s_c_count[count] = 0;
}
for(int count = 0;count<s_c.length;count++){
s_c_count[s_c[count] - 'a']++;
}
for(int count = 0;count<s_c.length;count++){
if(s_c_count[s_c[count] - 'a'] == 1){
return s_c[count];
}
}
return ' ';
}