c*2
2 楼
哪里违反规定了?
s*a
3 楼
A-Z, AA-AZ - ZZ : total 27*26 possibility, so 每个位上-进位不一样
第一个是26进制,往后都是27进制
第一个是26进制,往后都是27进制
h*n
4 楼
got it,多谢楼上的回答
h*n
5 楼
纠正一下,貌似每个位都是26进制
h*n
6 楼
share一下我的代码,欢迎指正:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication4
{
class ExcelIndexConversion
{
static int CharToInt(char c)
{
if (c < 'A' || c > 'Z')
return -1;
return (int)(c - 'A' + 1);
}
static char IntToChar(int digit)
{
if (digit < 1 || digit > 26)
return '#';
return (char)(digit + 'A' -1);
}
static int IndexToNum(String index)
{
int res = 0;
int digit = -1;
for (int i = 0; i < index.Length; i++)
{
digit = CharToInt(index[i]);
if (digit < 0) return -1;
res = res * 26 + digit;
}
return res;
}
static string NumToIndex(int num)
{
StringBuilder tmpStr = new StringBuilder();
StringBuilder resStr = new StringBuilder();
int digit;
if (num < 1)
{
resStr.Append("#");
return resStr.ToString();
}
else if (num < 27)
{
//如果只有一位要进行特别处理。。。
return IntToChar(num).ToString();
};
do
{
digit = num % 26;
tmpStr.Append(IntToChar(digit));
num = num / 26;
}while(num != 0 );
String tmp = tmpStr.ToString();
//reverse the string
for (int i = tmp.Length - 1; i >= 0; i--)
{
resStr.Append(tmp[i]);
}
return resStr.ToString();
}
static void Main(string[] args)
{
String testIndex = "AABB";
String resString;
int res = IndexToNum(testIndex);
resString = NumToIndex(res);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication4
{
class ExcelIndexConversion
{
static int CharToInt(char c)
{
if (c < 'A' || c > 'Z')
return -1;
return (int)(c - 'A' + 1);
}
static char IntToChar(int digit)
{
if (digit < 1 || digit > 26)
return '#';
return (char)(digit + 'A' -1);
}
static int IndexToNum(String index)
{
int res = 0;
int digit = -1;
for (int i = 0; i < index.Length; i++)
{
digit = CharToInt(index[i]);
if (digit < 0) return -1;
res = res * 26 + digit;
}
return res;
}
static string NumToIndex(int num)
{
StringBuilder tmpStr = new StringBuilder();
StringBuilder resStr = new StringBuilder();
int digit;
if (num < 1)
{
resStr.Append("#");
return resStr.ToString();
}
else if (num < 27)
{
//如果只有一位要进行特别处理。。。
return IntToChar(num).ToString();
};
do
{
digit = num % 26;
tmpStr.Append(IntToChar(digit));
num = num / 26;
}while(num != 0 );
String tmp = tmpStr.ToString();
//reverse the string
for (int i = tmp.Length - 1; i >= 0; i--)
{
resStr.Append(tmp[i]);
}
return resStr.ToString();
}
static void Main(string[] args)
{
String testIndex = "AABB";
String resString;
int res = IndexToNum(testIndex);
resString = NumToIndex(res);
}
}
}
相关阅读
现代教育应该保护孩子的“诗心”教育从娃娃抓起---学会尊重别人才会真正拥有心灵的财富父母也只喜欢漂亮可爱的孩子[原创]我来讲讲携程幼儿园事件的内幕与推测 (转载)小孩道歉信写了6封,算不算作秀?班里男同学当众露私处,作为女同学家长怎么跟学校抗议/表达顾虑好?总是吼孩子是一种病,必须控制!Re: 哲学如果不能治愈灵魂的疾苦,就没有任何益处 zz (转载)这辈子我就是失败的父母了,对孩子我无能为力了Raz-Kids, Raz-Plus, Reading A-Z区别在哪里?SUNY-Binghamton,Rutgers The State University of New Jerseunidentified_titleunidentified_title美国学校里的数学教学很好?怀孕头一个月别忽视了这些小症状 (转载)拒绝在人民币上写名字,孩子就被开除??教育孩子交朋友也是很重要的姐姐吃弟弟醋甚至想掐死弟弟,怎么教育好关于小孩学习golf的几个问题女儿不愿意跳舞,我逼她跳有错吗?