BrionyBean
BAN USERpublic class SeqTONum {
private final static int ALPHABETNUM = 26;
public static int GetSequenceNum(int numberOfChars, String input)
{
char[] arrInput = input.toUpperCase().toCharArray();
/*
* Test some illegal situations
* Return 0 if illegal
*/
if (numberOfChars <=0 || numberOfChars > 26)
return 0;
if (arrInput.length > numberOfChars)
{
return 0;
}
if (arrInput.length > 1){
for (int i = 0; i < arrInput.length-2; i++){
if(arrInput[i]>=arrInput[i+1])
return 0;
}
}
/*
* Seq to Num
*/
int num = 0;
if( arrInput.length == 1){
num +=(int)arrInput[0] - ((int) 'A') + 1;
return num;
}
for(int i = 0; i < arrInput.length -1 ; i++){
num += comNum(ALPHABETNUM, i + 1);
}
for(int i = 0; i < arrInput.length; i++) {
if(i==0){
for(char first = 'A'; first < arrInput[0]; first = (char)(first + 1)){
int bit = arrInput.length - 1;
int left = 'Z' - first;
num += comNum(left, bit);
}
} else if(i == arrInput.length-1){
num += (arrInput[i]-arrInput[i-1]);
} else{
for(char cur = (char)(arrInput[i-1] + 1); cur < arrInput[i]; cur = (char)(cur + 1)){
int bit = arrInput.length - i - 1;
int left = 'Z' - cur;
num += comNum(left, bit);
}
}
}
return num;
}
public static int comNum(int num, int top){
if(top == 0)
return 0;
int value = 0;
int tmp1 = 1, tmp2 = 1;
for(int i = 0 ; i < top; i++){
tmp1 *= (num-i);
tmp2 *= (top-i);
}
value = tmp1/tmp2;
return value;
}
public static void main(String[] args){
System.out.println(GetSequenceNum(5, "vwxyz"));
}
}
public class SeqTONum {
private final static int ALPHABETNUM = 26;
public static int GetSequenceNum(int numberOfChars, String input)
{
char[] arrInput = input.toUpperCase().toCharArray();
/*
* Test some illegal situations
* Return 0 if illegal
*/
if (numberOfChars <=0 || numberOfChars > 26)
return 0;
if (arrInput.length > numberOfChars)
{
return 0;
}
if (arrInput.length > 1){
for (int i = 0; i < arrInput.length-2; i++){
if(arrInput[i]>=arrInput[i+1])
return 0;
}
}
/*
* Seq to Num
*/
int num = 0;
if( arrInput.length == 1){
num +=(int)arrInput[0] - ((int) 'A') + 1;
return num;
}
for(int i = 0; i < arrInput.length -1 ; i++){
num += comNum(ALPHABETNUM, i + 1);
}
for(int i = 0; i < arrInput.length; i++) {
if(i==0){
for(char first = 'A'; first < arrInput[0]; first = (char)(first + 1)){
int bit = arrInput.length - 1;
int left = 'Z' - first;
num += comNum(left, bit);
}
} else if(i == arrInput.length-1){
num += (arrInput[i]-arrInput[i-1]);
} else{
for(char cur = (char)(arrInput[i-1] + 1); cur < arrInput[i]; cur = (char)(cur + 1)){
int bit = arrInput.length - i - 1;
int left = 'Z' - cur;
num += comNum(left, bit);
}
}
}
return num;
}
public static int comNum(int num, int top){
if(top == 0)
return 0;
int value = 0;
int tmp1 = 1, tmp2 = 1;
for(int i = 0 ; i < top; i++){
tmp1 *= (num-i);
tmp2 *= (top-i);
}
value = tmp1/tmp2;
return value;
}
public static void main(String[] args){
System.out.println(GetSequenceNum(5, "vwxyz"));
}
}
- BrionyBean July 05, 2013