这个题我感觉自己写的程序很不好
public class Solution {
public StringBuilder result=new StringBuilder();
public String convertToTitle(int n) {
while(n!=0)
{
result.append(convertNumber(n%26));
n/=26;
}
for(int i=0;i<result.length()-1;i++)
{
if(result.charAt(i)=='0')
{
minesOne(i);
}
}
if(result.charAt(result.length()-1)=='0')
{
result.deleteCharAt(result.length()-1);
}
return result.reverse().toString();
}
public char convertNumber(int n)
{
if(n==0)
{
return '0';
}
else
{
return (char)(n-1+'A');
}
}
public void minesOne(int index)
{
result.setCharAt(index, 'Z');
if(result.charAt(index+1)=='A')
{
result.setCharAt(index+1, '0');
}
else
{
result.setCharAt(index+1, (char)(result.charAt(index+1)-1));
}
}
}
大神的解答
class Solution {
public:
string convertToTitle(int n) {
if(n < 1)
return "";
else
{
string result = "";
while(n)
{//get every letter in n from right to left
n --;
char c = n%26 + 'A';
result = c + result;
n /= 26;
}
return result;
}
}
};
我真的弄不懂为啥他每次减一就可以。