Conversión de nombre a una clave usando radix-26

//Convert a name to a key using radix-26:
  //Use all of the letters of the alphabet as your digits.
  //Assume we only deal with lower-case letters for simplicity.
  //Then you can create the radix(base)-26 alphabet number system.
  //For example:
  // "alice" in radix-26 is 26^4*1 + 26^3*12 + 26^2*9 + 26^1*3 + 26^0*5 = 674055
  // "zoe" in radix-26 is 26^2*26 + 26^1*15 + 26^0*5 = 17971 
 static long nameToKey(String name) {
      long key = 0;
      /**
       * TODO
       */
      for (int i = 0;i<name.length();i++)
          key+= (name.charAt(i) - 'A' ) * Math.pow(26,name.length() - i - 1 );
      return key;


      //return 0;
  }

Salida esperada alice is 674055pero output is 15406960 no entiendo qué error lógico estoy cometiendo. Si alguien pudiera ayudarme por favor.

Respuesta 1

Está utilizando minúsculas letras. Esta

name.charAt(i) - 'A'

debiera ser

name.charAt(i) - 'a'

Pero para obtener el resultado que especifique debe agregar uno.

key += (name.charAt(i) - 'a' + 1) * Math.pow(26, name.length() - i - 1);
Respuesta: 2

Estoy buscando grandes proyectos Java (más de 100 MB) de código abierto. ¿Alguien sabe algo? Nota: Estoy marcando esto como wiki comunitario, aunque no estoy seguro de si es correcto.

Digamos que tengo algo como esto en mi archivo web.xml. <filter name = "foo"> <init-param> <param-name> fooBarUrl </param-name> <param-value> http: //foo.bar ...

Estoy tratando de convertir una matriz de Javascript en Java a una matriz de Java. Estoy usando el paquete javax.script. Probé este ejemplo aquí, pero no se reconoció el tipo "NativeArray": https: // stackoverflow ...

Tengo dos versiones de un proyecto con una prueba JUnit. Mirando la diferencia de los archivos no hay una razón obvia para esto, pero la prueba pasa en un proyecto pero no en el otro. Por un tiempo ahora he ...