字符串由大写字母A、B、C、D组成,个数和顺序不定,默认大小是字典序,计算字符串中逆序数。
样例:DBBAC
其中,D的逆序数是4
B的逆序数是1
B的逆序数是1
A的逆序数是0
C的逆序数是0
所以该字符串的逆序数是6,要求时间复杂度是O(n)
public static int fun(String str){
int numA=0;//A的数量
int numB=0;//B的数量
int numC=0;//C的数量
int numD=0;//D的数量
int count=0;//总计逆序数
for(int i=0;i<str.length();i++){
char ch=str.charAt(str.length()-i-1);
if(ch=='A')
numA++;
if(ch=='B'){
count=count+numA;
numB++;
}
if(ch=='C'){
count=count+numB+numA;
numC++;
}
if(ch=='D'){
count=count+numA+numB+numC;
numD++;
}
}
return count;
}