题目

给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。

置换的意思是,通过改变顺序可以使得两个字符串相等。

样例

"abc" 为 "cba" 的置换。

"aabc" 不是 "abcc" 的置换。

解题

定义一个数组统计字符次数,去除字符次数,数组是否为空

public class Solution {
    /**
     * @param A a string
     * @param B a string
     * @return a boolean
     */
    public boolean stringPermutation(String A, String B) {
        // Write your code here
        if(A==null && B==null)
            return true;
        if(A==null || B==null)
            return false;
        if(A.length() !=B.length())
            return false;
        int[] C = new int[256];
        
        for(int i=0;i<A.length();i++){
            char c1 = A.charAt(i);
            char c2 = B.charAt(i);
            C[c1]++;
            C[c2]--;
        }
        for(int i=0;i<256;i++){
            if(C[i]!=0)
                return false;
        }
        return true;
    }
}