1. Demanda
- Dado un entero positivo, devuelve el nombre de la columna correspondiente en la tabla de Excel.
P.ej,
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
Ejemplo 1:
Entrada: 1 Salida: "A"Ejemplo 2:
Entrada: 28 Salida: "AB"Ejemplo 3:
Entrada: 701 Salida: "ZY"
Dos, método de conversión base
2.1 Análisis de pensamiento
- A ~ Z se comparará con una F hexadecimal. A ~, A ~ es entonces Z representa un número de 1 a 26, significa que el sujeto para convertir el número decimal hexadecimal 26 A ~ Z representa, usamos para Representa la i- th bit del sistema de 26 bases, entonces:
- Expresión general :, el rango en este momento es 1 ~ 26, por lo que se requiere x1. Si el resto de 26 en ambos lados de la ecuación no puede obtener x1, para resolver este problema, puede restar 1 de ambos lados de la ecuación. ecuación al mismo tiempo, por lo que obtiene , De esta manera, el rango de x1-1 es 0 ~ 25, y el resto de 26 en ambos lados de la ecuación puede obtener x1, es decir, x1 = (n-1) % 26 + 1;
- De manera similar, para la conveniencia de encontrar x2, divida 26 en ambos lados de la ecuación al mismo tiempo para eliminar x1. Por lo tanto, el método para x2, x3, etc. es repetir 2, 3;
2.2 Implementación del código
class Solution {
public String convertToTitle(int n) {
StringBuilder sb = new StringBuilder();
while(n > 0) {
n--;
//这里将'A'看作1
sb.append((char)(n % 26 + 'A'));
n = n / 26;
}
sb.reverse();
return sb.toString();
}
}
2.3 Análisis de complejidad
- La complejidad del tiempo es convertir decimal a 26;
- La complejidad del espacio es O (1) y el valor de retorno no se incluye en el espacio adicional;
3. Dirección de aprendizaje
Autor: windliang