腾讯2017暑期实习生笔试题,计算字符串逆序数

字符串由大写字母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;
    }

你可能感兴趣的:(2017校招)