Encontrando bases numericas

Holas a todos denuevo,necesito una ayuda con un codigo..

en la unversidad el bendito profe me dejo una tarea, la cual era encontrar un algoritmo MUY EFICIENTE para este ejercicio :

subir imagenes

La solucion que se ocurrio es masomenos una busqueda exhaustiba y es la siguiente :

*Primero encuentro la menor base posible a la que pertenecen los numeros.

Numero 1 : 222 >>>>>>>> Menor base posible : 3
Numero 2: 132 >>>>>>>> Menor base posible : 4

*Luego paso ambos numeros al sistema decimal, si son iguales entonces ya se encontro la solucion.

*Pero si no son iguales, entonces :

Si el primer numero en base decimal es menor que el segundo, aumentamos en 1 la base del primer numero y en
caso contrario aumentamos en 1 la base del segundo numero.

Repetimos este ultimo paso hasta encontrar la solucion.

public class bases
{
   public static void main( String args [] )
   {
      String numero1 = "11111";
      String numero2 = "1011";
               
      obtenerNumero( numero1, numero2 );
   }

   public static void obtenerNumero( String numero1, String numero2 )
   {
      int baseP = 2, baseQ = 2;
      int decimalP = menorPosibleBase( numero1 );
      int decimalQ = menorPosibleBase( numero2 );

      while( baseP < 11 && baseQ < 11 )
      {
         decimalP = aDecimal( numero1, baseP );
         decimalQ = aDecimal( numero2, baseQ );

         if( decimalP == decimalQ )
         {
            System.out.println( decimalP + "  " + baseP + "  " + baseQ );
            break;
         }                     
         else
         {
            if( decimalP > decimalQ )
               baseQ ++;
            else
               baseP ++;
         }
      }
   }

   public static int aDecimal( String numero, int base )
   {
      int numeroDecimal = 0;
      int digito;

      for( int i = 0; i < numero.length(); i ++ )
      {
         digito = Integer.parseInt( Character.toString( numero.charAt( i ) ) );
         numeroDecimal = numeroDecimal + digito * ( int )Math.pow( base, numero.length() - i - 1 );
      }

      return numeroDecimal;
   }

   public static int menorPosibleBase( String numero )
   {
      int maxDigito = 1;
      int digito;

      for( int i = 0; i < numero.length(); i ++ )
      {
         digito = Integer.parseInt( Character.toString( numero.charAt( i ) ) );
               
         if( digito > maxDigito )
            maxDigito = digito;
      }

      return maxDigito + 1;
   }
}

Trate de hacer el codigo lo mas simple posible para que no tengan problemas en entenderlo, bueno pues ustedes se preguntaran
" en que quiere que le ayudemos este muchacho si ya tiene su codigo hecho", lo que pasa es que el profe va a evaluar que tan eficiente
es el codigo, y de acuerdo a eso pondra la nota, quisiera saber si alguien tiene un algoritmo mas eficiente ???, o si me pueden decir como
puedo mejorar este codigo, xfaaa, de antemano gracias a todos ..

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

cambia las busquedas por

cambia las busquedas por ejemplo ve busqueda binaria o otro algoritmo hay muchos por ahi que te llevaran a un mejor resultado

Imagen de XinefPro

No entiendo, en que parte

No entiendo, en que parte deberia de aplicar busqueda binaria ?, explicamelo porfavor si?

debes tratar de eleminar el

debes tratar de eleminar el menor numero de comparaciones en tu funcion elmenorPosibleBase ya que tu profesor
lo que te va tomar es que tu algoritmo tengo la menor cuota posible, por lo tanto debera tomar las comparaciones que hace tu alogritmo , hay diversos algoritmo que buscan en menor o mayor de una pila de numeros explicarte aca noooo!! una locura
asi que te recomiendo que busque en google los diferentes tipos de algoritmos que hay para buscar un numero mayor o menor entre la pila de numeros.

Imagen de Shadonwk

estoy seguro que hay una

estoy seguro que hay una forma mas facil de hacerlo nadamas dejame echarle una leida rapida a unos teoremas jejje

Imagen de XinefPro

tenias razon, hay una forma

tenias razon, hay una forma mas facil y eficiente, un compañero de la universidad dejo boquiabierto a todos con su algoritmo, pero aun asi el profe me puso buena nota por el algoritmo que le presente, xD, gracias x el intento

Imagen de Shadonwk

sip realmente encontre una

sip realmente encontre una solocion pero no he tenido tiempo de hacer el programita ya que por ahora estoy un poquito ocupado, seria interezante que propusieran agregarle a sus programas la medicion de tiempos ya que el que haya menos codigo no quiere decir que sea mas eficiente me a tocado ver como algunos programas bien ezquematizados y definidos con varias lineas de codigo funcionan mas rapido que aquellos en los que se intenta reducir las lineas de codigo...

Imagen de XinefPro

Si es que algun dia tienes

Si es que algun dia tienes tiempo no muestras el algoritmo xfa, aunque sea en pseudocodigo, te lo agradeceria mucho