给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。
置换的意思是,通过改变顺序可以使得两个字符串相等。
样例
“abc” 为 “cba” 的置换。
“aabc” 不是 “abcc” 的置换。
Given two strings, write a method to decide if one is a permutation of the other.
Example
abcd is a permutation of bcad, but abbe is not a permutation of abe
时O(n) 空O(n)
public class Solution {
/**
* @param A a string
* @param B a string
* @return a boolean
*/
public boolean stringPermutation(String A, String B) {
if(A == B) return true;
if(null == A || null == B || A.length() != B.length()) return false;
if(A.equals(B)) return true;
Map<Character, Integer> map = new HashMap<Character, Integer>();
for(int i = 0; i < A.length(); i++) {
char a = A.charAt(i);
if(map.containsKey(a)) {
if(map.get(a)+1 == 0) {
map.remove(a);
}else{
map.put(a, map.get(a)+1);
}
}else {
map.put(a, 1);
}
char b = B.charAt(i);
if(map.containsKey(b)) {
if(map.get(b)-1 == 0) {
map.remove(b);
}else{
map.put(b, map.get(b)-1);
}
}else {
map.put(b, -1);
}
}
if(map.size() == 0)
return true;
else
return false;
}
}