康托展开
public class main
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
System.out.println("请输入正整数");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
sc.nextLine();
for(int i=0;i<n;i++)
{
String s1="abcdefghijkl";
char[] arr1=s1.toCharArray();
System.out.println("请输入字符串");
String s2=sc.nextLine();
//System.out.println(s2);
char[] arr2=s2.toCharArray();
int rank=0;
for(int j=0;j<12;j++)
{
int index=findIndex(arr1, arr2[j]);
rank=rank+index*factorial(12-1-j);
System.out.println("元素所在坐标"+arr2[j]+index);
arr1[arr2[j]-'a']='l'+1;
}
System.out.println(rank+1);
}
}
static public int factorial(int n)
{
int result=1;
for(int i=1;i<=n;i++)
{
result=result*i;
}
return result;
}
static public int findIndex(char[] arr,char c)
{
int index=0;
for(int i=0;i<12;i++)
{
if(arr[i]<c)
index++;
//System.out.println(arr[i]+" "+c);
//System.out.println("元素所在坐标"+index);
}
return index;
}}

