统计字典序的问题:只要你知道一个字符串的字典序列呢个位置:你要知道他前面有多少个,再加一即可
使用两个函数:一个是统计长度为len的总个数,一个是统计一那个字母为首的长度为len的个数
长度为4.,让他先加长度为1,2,3的中个数,然后再加各个字符的位置
代码如下
public static void main(String[] args) {
// TODO Auto-generated method stub
int zong=0;
String str="cc";
int len=str.length();
for(int i=1;i<len;i++)
{
zong +=all(i);
}
//这里及时加上各个字符数量,一开始从1开始,依旧就是从她的前面的那一个加1开始
int start=1;
for(int i=0;i<len;i++)
{
int xu=str.charAt(i)-'a'+1;
for(;start<xu;start++)
{
zong+=tongji(start,len-i);
}
start=xu+1;
}
zong++;
System.out.println(zong);
}
//统计总个数
public static int all(int len)
{
int tongji=0;
for(int i=1;i<=27-len;i++)
{
tongji+=tongji(i,len);
}
return tongji;
}
//以哪个字母为首的个数
public static int tongji(int start,int len)
{
int tongji=0;
if(len==1)
{
return 1;
}
else
{
for(int i=start;i<28-len;i++)
{
tongji+=tongji(i+1,len-1);
}
return tongji;
}
}
有那里看不懂,回复,我尽量解决,
如果我写的有问题,告诉我。如果有更好的,让我也看看。