给定一个正整数,返回它在 Excel 表中相对应的列名称。
例如,
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
此题给我的第一感受就是我可能要学到新的知识了。 因为可能定义点什么来存储数字和字符的对应关系,那么好,自己先来实现功能。
ok ,做完了。下面公布一下我非常完美的答案: (叉会腰,给自己牛逼坏了)
static void Main(string[] args)
{
int b= 701;
string res = GetStringName(b);
Console.Write(res);
Console.ReadKey();
}
#region 168. Excel表列名称
private static string GetStringName(int b)
{
int j=1;
string anwser = "";
Dictionary<int, char> dic = new Dictionary<int, char>();
char[] nums=new char[]{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
for (int i = 0; i < nums.Length; i++)
{
dic.Add(j, nums[i]);
j++;
}
//以上已经完成将每个字符对应的数字存在了字典中
//那么现在就该对传入的b进行操作,操作前总结一下变换规律:
//10 10/26 = 0 余10 第一位就是J(10)
//50 50/26 = 1 余24 那么第一位就是 B (1) 第二位就是X(24)
//100 100/26 = 3 余21 那么第一位就是 C (3) 第二位就是U(21)
int yu = 0, bc = 0; //定义一个余数和一个被除树
yu = b % 26;
bc = b / 26;
//现在根据传入的参数
if (b<=26)
{
anwser = dic[b].ToString();
}
else
{
anwser = dic[bc].ToString() + dic[yu].ToString();
}
return anwser;
}
#endregion
//以上已经完成将每个字符对应的数字存在了字典中
//那么现在就该对传入的b进行操作,操作前总结一下变换规律:
//10 10/26 = 0 余10 第一位就是J(10)
//50 50/26 = 1 余24 那么第一位就是 B (1) 第二位就是X(24)
//100 100/26 = 3 余21 那么第一位就是 C (3) 第二位就是U(21)
int yu = 0, bc = 0; //定义一个余数和一个被除树
yu = b % 26;
bc = b / 26;
//现在根据传入的参数
if (b<=26)
{
anwser = dic[b].ToString();
}
else
{
anwser = dic[bc].ToString() + dic[yu].ToString();
}
return anwser;
}
#endregion
总结一下知识点:
1、字典取值: dic[b] (b必须是键,在定义的时候注意键在前,值在后)。
2、还是字段,以后举例一段字符对应的值,可以选择用字典实现。
3、本题最重要的是总结规律。