计算字符串逆序数

字符串由大写字母A、B、C、D组成,个数和顺序不定,默认大小是字典序,计算字符串中逆序数。 
样例:DBBAC 
其中,D的逆序数是4 
B的逆序数是1 
B的逆序数是1 
A的逆序数是0 
C的逆序数是0 
所以该字符串的逆序数是6,要求时间复杂度是O(n)

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;
    }

 

posted @ 2017-04-05 17:37  QQLQ  阅读(1130)  评论(0编辑  收藏  举报