[LeetCode] 387.文字列の最初の一意の文字(簡単)(JAVA)
タイトルアドレス:https://leetcode.com/problems/first-unique-character-in-a-string/
タイトル説明:
文字列を指定して、その中の最初の繰り返しのない文字を見つけ、そのインデックスを返します。存在しない場合は、-1を返します。
例:
s = "leetcode"
return 0.
s = "loveleetcode"
return 2.
注:文字列には小文字の英字のみが含まれていると想定できます。
一般的なアイデア
文字列を指定して、最初の一意の文字を見つけ、そのインデックスを返します。存在しない場合は-1を返します。
ヒント:文字列には小文字のみが含まれていると想定できます。
問題解決方法
- 最初に1回トラバースし、すべての文字の出現回数を数えます
- 最初からもう一度トラバースし、1回しか表示されない文字に遭遇したときにインデックスに戻ります
- 注:小文字のみが含まれているため、長さ26の配列を使用して回数を格納できます
class Solution {
public int firstUniqChar(String s) {
int[] count = new int[26];
for (int i = 0; i < s.length(); i++) {
count[s.charAt(i) - 'a']++;
}
for (int i = 0; i < s.length(); i++) {
if (count[s.charAt(i) - 'a'] == 1) return i;
}
return -1;
}
}
実行時間:7ミリ秒、Javaユーザーの82.57%を上回っています
メモリ消費量:39 MB、Javaユーザーの58.16%を上回っています