## Question

Given an integer `columnNumber`

, return *its corresponding column title as it appears in an Excel sheet*.

For example:

```
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
```

**Example 1:**

```
Input: columnNumber = 1
Output: "A"
```

**Example 2:**

```
Input: columnNumber = 28
Output: "AB"
```

**Example 3:**

```
Input: columnNumber = 701
Output: "ZY"
```

**Constraints:**

`1 <= columnNumber <= 231 - 1`

## Approach

- Figure out how the column title and numbers are converted, it's can be regarded as a 26-based conversion;
- Then you will find that for each title appended it's the abcd...x;
- You don't have to create a map or array to store all the number to column title, you use
`(char)('A' + mod)`

; - Then the things becomes we do divide, minus until the number is 0.
- The tricky part is the Z and final end with Z(no mod) so the column number is 1 after division;
- I tried in this direction with base 27, good point but can not be implemented , we cannot change the base of the whole thing,
**but we can slightly change the number we used to calculate each time**(`columnNumber--`

)

## Code

class Solution { public String convertToTitle(int columnNumber) { // num = 26^n * a + 26^n-1 * b... 26^0 * x; StringBuilder sb = new StringBuilder(); while (columnNumber > 0) { columnNumber--; int mod = columnNumber % 26; sb.insert(0, (char)('A' + mod)); columnNumber = columnNumber / 26; } return sb.toString(); } }