Cómo acelerar la primera búsqueda de personajes únicos

Estoy resolviendo 387. Primer personaje único en una cadena LeetCode problema definido como:

Dado una cadena, encuentre el primer carácter que no se repite y devuelva su índice. Si no existe, devuelva -1.

Ejemplos:

s = "leetcode"
return 0.

s = "loveleetcode",
return 2.

Nota Puede suponer que la cadena contiene solo letras minúsculas.

provechando que la entrada es ASCII totalmente en minúsculas, creé dos vectores de bits para rastrear cuando encontramos un personaje por primera y segunda vez.

¿Se puede mejorar aún más el siguiente código? LeetCode dice que el siguiente código es mejor que el 94.33% de las soluciones. ¿Qué más podrían haber hecho las últimas soluciones del 5,67% de que fueran mejores?

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;
  }

}

¿Hay trucos que se pueden hacer para mejorar la puntuación de LeetCode? Parece que @ mejorafor-each loop funciona mejor que el estándarfor loop pero no puedo probarlo, es una observación basada en algunas de mis presentaciones anteriores.

Respuestas a la pregunta(3)

Su respuesta a la pregunta