题:https://leetcode.com/problems/excel-sheet-column-title/description/
题目
Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
Example 1:
Input: 1
Output: "A"
Example 2:
Input: 28
Output: "AB"
Example 3:
Input: 701
Output: "ZY"
题目大意
26进制 转换, 不是从0开始 注意要 减一。
思路
非递归,从最后一位计算开始,然后 reverse()。
class Solution {
public String convertToTitle(int n) {
StringBuilder stringbuilder = new StringBuilder();
while(n>0){
stringbuilder.append((char)('A'+ (n-1)%26));
n=(n-1)/26;
}
return stringbuilder.reverse().toString();
}
}
递归
递归函数状态:String convertToTitle(int n) 输出n的26进制字符串。
递归转移方程:convertToTitle(n) = onvertToTitle(n / 26) + (char) (n % 26 + ‘A’); 即,前几位26进制数 + 最后一位26进制数。
最后一位 便于计算
终止条件:
若n==0,返回 空字符串。
class Solution {
public String convertToTitle(int n) {
if(n==0)
return "";
n--;
return convertToTitle(n/26) + (char)('A'+n%26);
}
}
初始版
class Solution {
public String convertToTitle(int n) {
if(n<27)
return String.valueOf((char)('A'+(n-1)));
return convertToTitle((n-1)/26) + String.valueOf((char)('A'+(n-1)%26));
}
}