首页 > 试题广场 >

序列 seq=[a,b,…,z,aa,ab,…,az,ba,

[问答题]
序列 seq=[a,b,…,z,aa,ab,…,az,ba,bb,…,bz,…,za,zb,…,zz,aaa,…]类似于excel的字母序排列,任意给一字符串 s=[a-z]+(由a-z字符串组成的任意长度字符串),请问s是序列seq的第几个字符串。
这不就是26进制的意思吗?
char *a=s;
int result=0;
while(a!='\0')
{
    result=result*26+(*a-'a'+1);
    a++;
}
return result;
发表于 2015-07-22 00:47:04 回复(4)
niu
发表于 2015-07-22 22:28:54 回复(0)
//序列起始位置是从0开始编号
int seqPose(string strSeq)
{
 int strlength=strSeq.length();
 int iPose=0;
 int Multer=1;
 for (int i=1;i<strlength;i++)
 {
  Multer*=26;
  iPose+=Multer;
  
 }
 Multer=1;
 for (int i=strlength-1;i>=0;i--)
 {
  iPose+=Multer*(strSeq[i]-'a');
  Multer*=26;
 }
 return iPose;
}
发表于 2015-07-22 10:37:49 回复(0)