Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1, A 2, B 3, C ... AA, Z
Solution1:
It looks like a very simple question, but it's wasted a lot of my time. Yesterday afternoon until noon today to finish the first project, a bit emptied = =.
Idea: Use the remainder method to count letters, but there are several corner case that require extra attention. 52%=0, the actual output is AZ, and my practice is to check the remainder, if zero, minus one,
Then the integer digits are calculated, and if the remainder is nonzero, the correct remainder and integer are output directly. Numbers that are less than or equal to 26 directly output letters. Do the confused, trapped dead.
Public classSolution { PublicString Converttotitle (intN) {StringBuilder sb=NewStringBuilder (); while(n>0) { if(n<=26) {Sb.insert (0, (Char) (' A ' +n-1)); returnsb.tostring (); } intcheck= n%26; if(check==0) {Sb.insert (0, ' Z '); N--; N/=26; } Else{Sb.insert (0, (Char) (' A ' +check-1)); N/=26; } } return NULL;}}
Solution2:
You don't have to think about other problems by reducing the number of numbers repeatedly. Reference to the discussion
Public classSolution { PublicString Converttotitle (intN) {if(N < 1) { return""; } StringBuilder SB=NewStringBuilder (); while(N > 0) {n--; Sb.insert (0, (Char) (n% + ' A ')); N/= 26; } returnsb.tostring (); }}
168. Excel Sheet Column Title