LintCode 字符串比较

比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是大写字母:

给出 A = "ABCD" B = "AABC", 返回 false

给出 A = "ABCD" B = "ACD",返回 true

 

我的代码:

    /**

     * 由于是在字符串strA中确定是否包含字符串strB中的所有字符<br/>

     * 故只需要将字符串strB中的每一个字符在字符串strA中遍历,当在字符串strA中不存在时,则直接返回false<br/>

     * 当存在是,则进行字符串strB的下一个字符查找<br/>

     * @param strA

     * @param strB

     * @return

     */

    public boolean compareStrings(String strA, String strB) {

        int aLen = strA.length();

        int[] arr = new int[aLen];

        for (int i = 0; i < aLen; i++) {

            arr[i] = 0;

        }

        boolean flag = true;

        for (int i = 0, bLen = strB.length(); i < bLen; i++) {

            flag = false;

             for(int j = 0;(j < aLen) && (!flag);j ++){

                if (strB.charAt(i) == strA.charAt(j) && arr[j] == 0) {

                    arr[j] = 1;

                    flag = true;

                }

            }

            if (!flag) {

                break;

            }

        }

        return flag;

    }

 

还有种比较牛的

思路:统计两边的信息进行比较。如果B中的每种字符的个数小于等于A中的,则A包含B。

参考资料:http://www.jianshu.com/p/f7f9987f1bbb

int Achar[26];//储存字符串的每个字母个数

 int Bchar[26];

 for (int i = 0; i<26; i++) {

     Achar[i] = 0;

     Bchar[i] = 0;

 }

 int Adate,Bdate;//记录AB的字符统计数据

 int countA = A.length();

 int countB = B.length();

 for (int i = 0; i<countA; i++) {

 int index;

 index = A[i] - 65;

 Achar[index]++;

 }

 for (int i = 0; i<countB; i++) {

 int index;

 index = B[i] - 65;//65为大写A的ASCⅡ码值

 Bchar[index]++;

 }

 for (int i = 0; i<26; i++) {

     if (Achar[i]<Bchar[i])

     return false;

}

return true;

}

 

 

你可能感兴趣的:(code)