Como acelerar a primeira pesquisa de personagem exclusiva

Estou resolvendo 387. Primeiro caractere exclusivo de uma string LeetCode problema definido como:

Dada uma string, encontre o primeiro caractere não repetitivo e retorne seu índice. Se não existir, retorne -1.

Exemplos

s = "leetcode"
return 0.

s = "loveleetcode",
return 2.

Nota Você pode supor que a string contenha apenas letras minúscula

proveitando a vantagem da entrada ser totalmente ASCII em minúsculas, criei vetores de dois bits para rastrear quando encontramos um caractere pela primeira e pela segunda ve

O código abaixo pode ser melhorado ainda mais? O LeetCode diz que o código abaixo é melhor que as soluções de 94,33%. O que mais poderia ter sido feito pelas últimas soluções de 5,67% de que elas eram melhores?

class Solution {

  public int firstUniqChar(String s) {
    int firstSpot = 0;
    int secondSpot = 0;
    char[] chars = s.toCharArray();

    for (char c : chars) {
      int mask = 1 << c - 'a';
      if ((firstSpot & mask) == 0) {
        firstSpot |= mask;
      } else if ((secondSpot & mask) == 0) {
        secondSpot |= mask;
      }
    }

    int i = 0;
    for (char c : chars) {
      int mask = 1 << c - 'a';
      if ((secondSpot & mask) == 0) {
         return i;
      }
      i++;
    }
    return -1;
  }

}

Existem truques que podem ser feitos para melhorar a pontuação do LeetCode? Parece quefor-each loop executa melhor que o padrãofor loop, mas não posso provar, é uma observação baseada em algumas das minhas observações anteriore

questionAnswers(3)

yourAnswerToTheQuestion