私はこれとこの質問を見てきましたが、私のものは異なります。Javaで効率的なコードを書きたいです。私は2つの解決策を思いつきました:
アプローチ 1.
find_first_reapeted(char[] input)
{
HashMap<Character,Integer> myhash = new HashMap<Character,Integer> ();
for(int i=0;i<input.length;i++)
{
if(myhash.containsKey(input[i])
myhash.put(input[i],2); //just put 2 even if it is more than 2
else
myhash.put(input[i],1);
}
for(int i=0;i<input.length;i++)
{
if(myhash.getValue(input[i])==1)
return input[i];
}
}
アプローチ 2。
find_first_reapeted(char[] input)
{
int[] allchars = new int[26];
for(int i=0;i<input.length;i++)
{
allchars[input[i]-'a'] += 1;
}
for(int i=0;i<input.length;i++)
{
if(allchars[input[i]-'a']==1)
return input[i];
}
}
まず、より良い解決策はありますか?(時間と空間の複雑さの項)? そうでない場合、上記のどれが優れていますか?ハッシュマップのスペースの複雑さについてはよくわかりません!